diff options
author | kib <kib@FreeBSD.org> | 2012-03-02 09:48:46 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2012-03-02 09:48:46 +0000 |
commit | cca832bf9d799f80670b8c806b557b652a8b49b6 (patch) | |
tree | 47a26492ca3c5502f8ab13c61ba577a6dce15490 /sys/fs | |
parent | 93f21831844e1002dc8984f9b50f2d260d7d957b (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/fs/nullfs/null_subr.c | 2 |
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); |