diff options
author | kib <kib@FreeBSD.org> | 2010-11-05 21:13:16 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2010-11-05 21:13:16 +0000 |
commit | 5fa1e0e5109f869a3976d630e605a01abe0075b6 (patch) | |
tree | b6525151f08e6a26c91fb2560350c30b1161a1db /sys | |
parent | f8533414f7c484fcb7aa757dcd3699ebdc052abe (diff) | |
download | FreeBSD-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')
-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 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); |