From f1759f2396baad2564a4025e3f1751e02cf8fab1 Mon Sep 17 00:00:00 2001 From: kris Date: Tue, 28 Feb 2006 00:05:44 +0000 Subject: Correct the vnode locking in fdescfs. PR: kern/93905 Submitted by: Kostik Belousov Reviewed by: jeff MFC After: 1 week --- sys/fs/fdescfs/fdesc_vnops.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'sys/fs/fdescfs') 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); } -- cgit v1.1