mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-18 06:14:27 +00:00
Correct the vnode locking in fdescfs.
PR: kern/93905 Submitted by: Kostik Belousov <kostikbel@gmail.com> Reviewed by: jeff MFC After: 1 week
This commit is contained in:
parent
493be2ca17
commit
7d65872fff
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=156095
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue