summaryrefslogtreecommitdiffstats
path: root/sys/fs/fdescfs
diff options
context:
space:
mode:
authorkris <kris@FreeBSD.org>2006-02-28 00:05:44 +0000
committerkris <kris@FreeBSD.org>2006-02-28 00:05:44 +0000
commitf1759f2396baad2564a4025e3f1751e02cf8fab1 (patch)
tree6c8f7d00219b6ac92321f5859907777e2c7ba3b7 /sys/fs/fdescfs
parentce247bd7742e102956de1e6effb70edb80f9ec31 (diff)
downloadFreeBSD-src-f1759f2396baad2564a4025e3f1751e02cf8fab1.zip
FreeBSD-src-f1759f2396baad2564a4025e3f1751e02cf8fab1.tar.gz
Correct the vnode locking in fdescfs.
PR: kern/93905 Submitted by: Kostik Belousov <kostikbel@gmail.com> Reviewed by: jeff MFC After: 1 week
Diffstat (limited to 'sys/fs/fdescfs')
-rw-r--r--sys/fs/fdescfs/fdesc_vnops.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/sys/fs/fdescfs/fdesc_vnops.c b/sys/fs/fdescfs/fdesc_vnops.c
index 7b2dd53..61dd48e 100644
--- a/sys/fs/fdescfs/fdesc_vnops.c
+++ b/sys/fs/fdescfs/fdesc_vnops.c
@@ -193,11 +193,9 @@ fdesc_lookup(ap)
goto bad;
}
- VOP_UNLOCK(dvp, 0, td);
if (cnp->cn_namelen == 1 && *pname == '.') {
*vpp = dvp;
VREF(dvp);
- vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY, td);
return (0);
}
@@ -228,12 +226,12 @@ fdesc_lookup(ap)
if (error)
goto bad;
VTOFDESC(fvp)->fd_fd = fd;
- vn_lock(fvp, LK_EXCLUSIVE | LK_RETRY, td);
+ if (fvp != dvp)
+ vn_lock(fvp, LK_EXCLUSIVE | LK_RETRY, td);
*vpp = fvp;
return (0);
bad:
- vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY, td);
*vpp = NULL;
return (error);
}
OpenPOWER on IntegriCloud