Add some assertions for the code handling vm_object for tmpfs vnode.
In particular, vnode must be exclusively locked when the tmpfs vnode and object are divorced. When the vnode is opened, the object must be still alive, since only live vnode can be opened, and the tmpfs node owns a reference on the object. Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 2 weeks
This commit is contained in:
parent
706f80801d
commit
55781cb922
@ -428,6 +428,7 @@ void
|
||||
tmpfs_destroy_vobject(struct vnode *vp, vm_object_t obj)
|
||||
{
|
||||
|
||||
ASSERT_VOP_ELOCKED(vp, "tmpfs_destroy_vobject");
|
||||
if (vp->v_type != VREG || obj == NULL)
|
||||
return;
|
||||
|
||||
|
@ -258,6 +258,8 @@ tmpfs_open(struct vop_open_args *v)
|
||||
else {
|
||||
error = 0;
|
||||
/* For regular files, the call below is nop. */
|
||||
KASSERT(vp->v_type != VREG || (node->tn_reg.tn_aobj->flags &
|
||||
OBJ_DEAD) == 0, ("dead object"));
|
||||
vnode_create_vobject(vp, node->tn_size, v->a_td);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user