summaryrefslogtreecommitdiffstats
path: root/sys/fs
diff options
context:
space:
mode:
authorrmacklem <rmacklem@FreeBSD.org>2009-07-12 17:02:17 +0000
committerrmacklem <rmacklem@FreeBSD.org>2009-07-12 17:02:17 +0000
commit049621beb5d8c1bc0f11998d3b3447df970cb552 (patch)
treeeb0edd86610b3d310a9b773a2168681359479f92 /sys/fs
parent8233306b4dbea227967404cab9efb88be9cda042 (diff)
downloadFreeBSD-src-049621beb5d8c1bc0f11998d3b3447df970cb552.zip
FreeBSD-src-049621beb5d8c1bc0f11998d3b3447df970cb552.tar.gz
Fix the handling of dotdot in lookup for the experimental nfs client
in a manner analagous to the change in r195294 for the regular nfs client. Approved by: re (kensmith), kib (mentor)
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/nfsclient/nfs_clvnops.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/fs/nfsclient/nfs_clvnops.c b/sys/fs/nfsclient/nfs_clvnops.c
index f69be4d..bf6ec85 100644
--- a/sys/fs/nfsclient/nfs_clvnops.c
+++ b/sys/fs/nfsclient/nfs_clvnops.c
@@ -1111,9 +1111,11 @@ nfs_lookup(struct vop_lookup_args *ap)
ltype = VOP_ISLOCKED(dvp);
error = vfs_busy(mp, MBF_NOWAIT);
if (error != 0) {
+ vfs_ref(mp);
VOP_UNLOCK(dvp, 0);
error = vfs_busy(mp, 0);
vn_lock(dvp, ltype | LK_RETRY);
+ vfs_rel(mp);
if (error == 0 && (dvp->v_iflag & VI_DOOMED)) {
vfs_unbusy(mp);
error = ENOENT;
OpenPOWER on IntegriCloud