summaryrefslogtreecommitdiffstats
path: root/sys/fs/nullfs/null_subr.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2012-03-02 09:48:46 +0000
committerkib <kib@FreeBSD.org>2012-03-02 09:48:46 +0000
commitcca832bf9d799f80670b8c806b557b652a8b49b6 (patch)
tree47a26492ca3c5502f8ab13c61ba577a6dce15490 /sys/fs/nullfs/null_subr.c
parent93f21831844e1002dc8984f9b50f2d260d7d957b (diff)
downloadFreeBSD-src-cca832bf9d799f80670b8c806b557b652a8b49b6.zip
FreeBSD-src-cca832bf9d799f80670b8c806b557b652a8b49b6.tar.gz
Do not expose unlocked unconstructed nullfs vnode on mount list.
Lock the native nullfs vnode lock before switching the locks. Tested by: pho MFC after: 1 week
Diffstat (limited to 'sys/fs/nullfs/null_subr.c')
-rw-r--r--sys/fs/nullfs/null_subr.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/fs/nullfs/null_subr.c b/sys/fs/nullfs/null_subr.c
index ae29bfc..7e3571d 100644
--- a/sys/fs/nullfs/null_subr.c
+++ b/sys/fs/nullfs/null_subr.c
@@ -172,12 +172,12 @@ static void
null_destroy_proto(struct vnode *vp, void *xp)
{
+ lockmgr(&vp->v_lock, LK_EXCLUSIVE, NULL);
VI_LOCK(vp);
vp->v_data = NULL;
vp->v_vnlock = &vp->v_lock;
vp->v_op = &dead_vnodeops;
VI_UNLOCK(vp);
- (void) vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
vgone(vp);
vput(vp);
free(xp, M_NULLFSNODE);
OpenPOWER on IntegriCloud