From fc79a404ddfb4ca38feb9e06af6bef0e4c459e14 Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Fri, 5 Nov 2010 21:13:16 +0000 Subject: [PATCH] Fix a bug in r214049. The nvp == vp case shall be handled specially only for !usevget case. If VFS_VGET is working, the vnode shared lock is obtained recursively and vput() shall be done, not vunref(). Submitted by: rmacklem Tested by: Josh Carroll MFC after: 3 days --- sys/nfsserver/nfs_serv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/nfsserver/nfs_serv.c b/sys/nfsserver/nfs_serv.c index 4a3876fe68bb..2b9131ffe2ad 100644 --- a/sys/nfsserver/nfs_serv.c +++ b/sys/nfsserver/nfs_serv.c @@ -3252,7 +3252,7 @@ nfsrv_readdirplus(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, nfhp->fh_fsid = nvp->v_mount->mnt_stat.f_fsid; if ((error1 = VOP_VPTOFH(nvp, &nfhp->fh_fid)) == 0) error1 = VOP_GETATTR(nvp, vap, cred); - if (vp == nvp) + if (!usevget && vp == nvp) vunref(nvp); else vput(nvp);