summaryrefslogtreecommitdiffstats
path: root/sys/fs
diff options
context:
space:
mode:
authortruckman <truckman@FreeBSD.org>2003-06-01 09:16:26 +0000
committertruckman <truckman@FreeBSD.org>2003-06-01 09:16:26 +0000
commitc2bcb3a19efb909e54ef04fcad58988ee3c36803 (patch)
treece0cd91a026b91c765768202629ffe8dc55e4574 /sys/fs
parentc12a93745fcb4d0b29533f419b5a9903fc4b9401 (diff)
downloadFreeBSD-src-c2bcb3a19efb909e54ef04fcad58988ee3c36803.zip
FreeBSD-src-c2bcb3a19efb909e54ef04fcad58988ee3c36803.tar.gz
Don't unlock the parent directory vnode twice if the ISDOTDOT flag
is set.
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/pseudofs/pseudofs_vnops.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/fs/pseudofs/pseudofs_vnops.c b/sys/fs/pseudofs/pseudofs_vnops.c
index 6787b01..034a429 100644
--- a/sys/fs/pseudofs/pseudofs_vnops.c
+++ b/sys/fs/pseudofs/pseudofs_vnops.c
@@ -411,7 +411,8 @@ pfs_lookup(struct vop_lookup_args *va)
vn_lock(vn, LK_EXCLUSIVE|LK_RETRY, cnp->cn_thread);
cnp->cn_flags &= ~PDIRUNLOCK;
}
- if (!lockparent || !(cnp->cn_flags & ISLASTCN))
+ if (!((lockparent && (cnp->cn_flags & ISLASTCN)) ||
+ (cnp->cn_flags & ISDOTDOT)))
VOP_UNLOCK(vn, 0, cnp->cn_thread);
/*
OpenPOWER on IntegriCloud