diff options
author | alc <alc@FreeBSD.org> | 2003-05-02 19:33:21 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2003-05-02 19:33:21 +0000 |
commit | d28252389324dce4218951654f90d3ed3eac5317 (patch) | |
tree | c760d2f859bee66201bed52da9d2a5764f62e5aa /sys/kern/vfs_default.c | |
parent | 872854ec00e39a7e3d0e6aeb3be907b9f38d5bb3 (diff) | |
download | FreeBSD-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.c | 5 |
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")); |