Clear the VFREE flag when the vnode is removed from the free list in
getnewvnode(). Otherwise routines called from VOP_INACTIVE() might attempt to remove the vnode from a free list the vnode isn't on, causing corruption. PR: 18012
This commit is contained in:
parent
5262a5cdb7
commit
8e9f33e1ce
@ -582,6 +582,7 @@ getnewvnode(tag, mp, vops, vpp)
|
|||||||
}
|
}
|
||||||
if (vp) {
|
if (vp) {
|
||||||
vp->v_flag |= VDOOMED;
|
vp->v_flag |= VDOOMED;
|
||||||
|
vp->v_flag &= ~VFREE;
|
||||||
freevnodes--;
|
freevnodes--;
|
||||||
simple_unlock(&vnode_free_list_slock);
|
simple_unlock(&vnode_free_list_slock);
|
||||||
cache_purge(vp);
|
cache_purge(vp);
|
||||||
|
@ -582,6 +582,7 @@ getnewvnode(tag, mp, vops, vpp)
|
|||||||
}
|
}
|
||||||
if (vp) {
|
if (vp) {
|
||||||
vp->v_flag |= VDOOMED;
|
vp->v_flag |= VDOOMED;
|
||||||
|
vp->v_flag &= ~VFREE;
|
||||||
freevnodes--;
|
freevnodes--;
|
||||||
simple_unlock(&vnode_free_list_slock);
|
simple_unlock(&vnode_free_list_slock);
|
||||||
cache_purge(vp);
|
cache_purge(vp);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user