FreeBSD Bugzilla – Attachment 239398 Details for
Bug 268828
panic: main-n259921-17f2b12a3877 panicked (Fatal trap 12: page fault while in kernel mode)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Add an argument to nfsvno_open() to indicate if nfsvno_namei() was called
nfsvnoopen.patch (text/plain), 3.57 KB, created by
Rick Macklem
on 2023-01-11 04:19:09 UTC
(
hide
)
Description:
Add an argument to nfsvno_open() to indicate if nfsvno_namei() was called
Filename:
MIME Type:
Creator:
Rick Macklem
Created:
2023-01-11 04:19:09 UTC
Size:
3.57 KB
patch
obsolete
>--- sys/fs/nfs/nfs_var.h.sav 2023-01-10 15:57:14.461974000 -0800 >+++ sys/fs/nfs/nfs_var.h 2023-01-10 15:57:41.963670000 -0800 >@@ -719,7 +719,7 @@ int nfsvno_statfs(vnode_t, struct statfs *); > void nfsvno_getfs(struct nfsfsinfo *, int); > void nfsvno_open(struct nfsrv_descript *, struct nameidata *, nfsquad_t, > nfsv4stateid_t *, struct nfsstate *, int *, struct nfsvattr *, int32_t *, >- int, NFSACL_T *, nfsattrbit_t *, struct ucred *, >+ int, NFSACL_T *, nfsattrbit_t *, struct ucred *, bool, > struct nfsexstuff *, vnode_t *); > int nfsvno_updfilerev(vnode_t, struct nfsvattr *, struct nfsrv_descript *, > NFSPROC_T *); >--- sys/fs/nfsserver/nfs_nfsdport.c.sav 2023-01-09 17:01:12.238427000 -0800 >+++ sys/fs/nfsserver/nfs_nfsdport.c 2023-01-10 15:56:11.728561000 -0800 >@@ -1852,7 +1852,7 @@ void > nfsvno_open(struct nfsrv_descript *nd, struct nameidata *ndp, > nfsquad_t clientid, nfsv4stateid_t *stateidp, struct nfsstate *stp, > int *exclusive_flagp, struct nfsvattr *nvap, int32_t *cverf, int create, >- NFSACL_T *aclp, nfsattrbit_t *attrbitp, struct ucred *cred, >+ NFSACL_T *aclp, nfsattrbit_t *attrbitp, struct ucred *cred, bool done_namei, > struct nfsexstuff *exp, struct vnode **vpp) > { > struct vnode *vp = NULL; >@@ -1935,7 +1935,7 @@ nfsvno_open(struct nfsrv_descript *nd, struct nameidat > } > } else { > nfsvno_relpathbuf(ndp); >- if (create == NFSV4OPEN_CREATE) { >+ if (done_namei && create == NFSV4OPEN_CREATE) { > if (ndp->ni_dvp == ndp->ni_vp) > vrele(ndp->ni_dvp); > else >--- sys/fs/nfsserver/nfs_nfsdserv.c.sav 2023-01-09 16:58:29.507061000 -0800 >+++ sys/fs/nfsserver/nfs_nfsdserv.c 2023-01-10 15:56:23.312260000 -0800 >@@ -2830,13 +2830,14 @@ nfsrvd_open(struct nfsrv_descript *nd, __unused int is > u_long *hashp; > NFSACL_T *aclp = NULL; > struct thread *p = curthread; >+ bool done_namei; > > #ifdef NFS4_ACL_EXTATTR_NAME > aclp = acl_alloc(M_WAITOK); > aclp->acl_cnt = 0; > #endif > NFSZERO_ATTRBIT(&attrbits); >- named.ni_startdir = NULL; >+ done_namei = false; > named.ni_cnd.cn_nameiop = 0; > NFSM_DISSECT(tl, u_int32_t *, 6 * NFSX_UNSIGNED); > i = fxdr_unsigned(int, *(tl + 5)); >@@ -3042,6 +3043,7 @@ nfsrvd_open(struct nfsrv_descript *nd, __unused int is > if (!nd->nd_repstat) { > nd->nd_repstat = nfsvno_namei(nd, &named, dp, 0, exp, > &dirp); >+ done_namei = true; > } else { > vrele(dp); > nfsvno_relpathbuf(&named); >@@ -3049,7 +3051,7 @@ nfsrvd_open(struct nfsrv_descript *nd, __unused int is > if (create == NFSV4OPEN_CREATE) { > switch (how) { > case NFSCREATE_UNCHECKED: >- if (named.ni_vp) { >+ if (done_namei && named.ni_vp != NULL) { > /* > * Clear the setable attribute bits, except > * for Size, if it is being truncated. >@@ -3061,12 +3063,13 @@ nfsrvd_open(struct nfsrv_descript *nd, __unused int is > } > break; > case NFSCREATE_GUARDED: >- if (named.ni_vp && !nd->nd_repstat) >+ if (done_namei && named.ni_vp != NULL && >+ nd->nd_repstat == 0) > nd->nd_repstat = EEXIST; > break; > case NFSCREATE_EXCLUSIVE: > exclusive_flag = 1; >- if (!named.ni_vp) >+ if (done_namei && named.ni_vp == NULL) > nva.na_mode = 0; > break; > case NFSCREATE_EXCLUSIVE41: >@@ -3076,7 +3079,7 @@ nfsrvd_open(struct nfsrv_descript *nd, __unused int is > } > nfsvno_open(nd, &named, clientid, &stateid, stp, > &exclusive_flag, &nva, cverf, create, aclp, &attrbits, >- nd->nd_cred, exp, &vp); >+ nd->nd_cred, done_namei, exp, &vp); > } else if (claim == NFSV4OPEN_CLAIMPREVIOUS || claim == > NFSV4OPEN_CLAIMFH || claim == NFSV4OPEN_CLAIMDELEGATECURFH || > claim == NFSV4OPEN_CLAIMDELEGATEPREVFH) {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 268828
:
239342
|
239354
|
239370
| 239398