From 5fa1e0e5109f869a3976d630e605a01abe0075b6 Mon Sep 17 00:00:00 2001 From: kib Date: Fri, 5 Nov 2010 21:13:16 +0000 Subject: 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(-) (limited to 'sys/nfsserver') diff --git a/sys/nfsserver/nfs_serv.c b/sys/nfsserver/nfs_serv.c index 4a3876f..2b9131f 100644 --- a/sys/nfsserver/nfs_serv.c +++ b/sys/nfsserver/nfs_serv.c @@ -3252,7 +3252,7 @@ again: 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); -- cgit v1.1