summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_default.c
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2003-05-02 19:33:21 +0000
committeralc <alc@FreeBSD.org>2003-05-02 19:33:21 +0000
commitd28252389324dce4218951654f90d3ed3eac5317 (patch)
treec760d2f859bee66201bed52da9d2a5764f62e5aa /sys/kern/vfs_default.c
parent872854ec00e39a7e3d0e6aeb3be907b9f38d5bb3 (diff)
downloadFreeBSD-src-d28252389324dce4218951654f90d3ed3eac5317.zip
FreeBSD-src-d28252389324dce4218951654f90d3ed3eac5317.tar.gz
Lock access to the vm_object's flags in vop_stdcreatevobject().
Diffstat (limited to 'sys/kern/vfs_default.c')
-rw-r--r--sys/kern/vfs_default.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c
index cef1a0f..5ecb4aa 100644
--- a/sys/kern/vfs_default.c
+++ b/sys/kern/vfs_default.c
@@ -610,12 +610,15 @@ retry:
VM_OBJECT_UNLOCK(object);
vrele(vp);
} else {
+ VM_OBJECT_LOCK(object);
if (object->flags & OBJ_DEAD) {
VOP_UNLOCK(vp, 0, td);
- tsleep(object, PVM, "vodead", 0);
+ msleep(object, VM_OBJECT_MTX(object), PDROP | PVM,
+ "vodead", 0);
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td);
goto retry;
}
+ VM_OBJECT_UNLOCK(object);
}
KASSERT(vp->v_object != NULL, ("vfs_object_create: NULL object"));
OpenPOWER on IntegriCloud