summaryrefslogtreecommitdiffstats
path: root/sys/nfsserver
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2010-11-05 21:13:16 +0000
committerkib <kib@FreeBSD.org>2010-11-05 21:13:16 +0000
commit5fa1e0e5109f869a3976d630e605a01abe0075b6 (patch)
treeb6525151f08e6a26c91fb2560350c30b1161a1db /sys/nfsserver
parentf8533414f7c484fcb7aa757dcd3699ebdc052abe (diff)
downloadFreeBSD-src-5fa1e0e5109f869a3976d630e605a01abe0075b6.zip
FreeBSD-src-5fa1e0e5109f869a3976d630e605a01abe0075b6.tar.gz
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 <josh.carroll gmail com> MFC after: 3 days
Diffstat (limited to 'sys/nfsserver')
-rw-r--r--sys/nfsserver/nfs_serv.c2
1 files changed, 1 insertions, 1 deletions
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);
OpenPOWER on IntegriCloud