diff options
author | Konstantin Belousov <kib@FreeBSD.org> | 2010-11-05 21:13:16 +0000 |
---|---|---|
committer | Konstantin Belousov <kib@FreeBSD.org> | 2010-11-05 21:13:16 +0000 |
commit | fc79a404ddfb4ca38feb9e06af6bef0e4c459e14 (patch) | |
tree | b6525151f08e6a26c91fb2560350c30b1161a1db /sys/nfsserver | |
parent | e7bb9ab605b9cefe66b6cb6b053478182600ddcf (diff) | |
download | src-fc79a404ddfb4ca38feb9e06af6bef0e4c459e14.tar.gz src-fc79a404ddfb4ca38feb9e06af6bef0e4c459e14.zip |
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
Notes
Notes:
svn path=/head/; revision=214851
Diffstat (limited to 'sys/nfsserver')
-rw-r--r-- | sys/nfsserver/nfs_serv.c | 2 |
1 files changed, 1 insertions, 1 deletions
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 @@ 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); |