diff options
| author | Rick Macklem <rmacklem@FreeBSD.org> | 2025-07-18 18:47:59 +0000 |
|---|---|---|
| committer | Rick Macklem <rmacklem@FreeBSD.org> | 2025-07-18 18:47:59 +0000 |
| commit | cf2ff49e6e5e3b9ac28e4f853a6ec9d9599d69b1 (patch) | |
| tree | 4b5d0993548021d04de176f19efdfd0099f900f5 /sys/fs | |
| parent | 2420e64c463a4873a7f0cb86837148bc66a6474a (diff) | |
Diffstat (limited to 'sys/fs')
| -rw-r--r-- | sys/fs/nfsserver/nfs_nfsdserv.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/fs/nfsserver/nfs_nfsdserv.c b/sys/fs/nfsserver/nfs_nfsdserv.c index f7564ade401b..3acf07d5253b 100644 --- a/sys/fs/nfsserver/nfs_nfsdserv.c +++ b/sys/fs/nfsserver/nfs_nfsdserv.c @@ -4353,9 +4353,10 @@ nfsrvd_openattr(struct nfsrv_descript *nd, __unused int isdgram, int error = 0; NFSNAMEICNDSET(&cn, nd->nd_cred, LOOKUP, OPENNAMED | ISLASTCN | - NOFOLLOW); + NOFOLLOW | LOCKLEAF); cn.cn_nameptr = "."; cn.cn_namelen = 1; + cn.cn_lkflags = LK_SHARED; NFSM_DISSECT(tl, uint32_t *, NFSX_UNSIGNED); if (*tl == newnfs_true) cn.cn_flags |= CREATENAMED; @@ -4374,6 +4375,8 @@ nfsrvd_openattr(struct nfsrv_descript *nd, __unused int isdgram, if (nd->nd_repstat == ENOATTR) nd->nd_repstat = NFSERR_NOENT; } + if (nd->nd_repstat == 0) + NFSVOPUNLOCK(*vpp); vput(dp); NFSEXITCODE2(0, nd); |
