aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/sysv_shm.c
diff options
context:
space:
mode:
authorAlan Cox <alc@FreeBSD.org>2003-01-02 18:32:13 +0000
committerAlan Cox <alc@FreeBSD.org>2003-01-02 18:32:13 +0000
commit49bf855d206640760b7e256558f369ed924cf998 (patch)
tree6f4ad31f68a30abb8ef90d37cbc7ad118153faf2 /sys/kern/sysv_shm.c
parent464ef179a037714b6812b45fd58d9a7235458048 (diff)
Lock the vm object when performing back-to-back vm_object_clear_flag() and
vm_object_set_flag().
Notes
Notes: svn path=/head/; revision=108556
Diffstat (limited to 'sys/kern/sysv_shm.c')
-rw-r--r--sys/kern/sysv_shm.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/kern/sysv_shm.c b/sys/kern/sysv_shm.c
index 8baa579be790..6c9d34a8dd5f 100644
--- a/sys/kern/sysv_shm.c
+++ b/sys/kern/sysv_shm.c
@@ -660,8 +660,10 @@ shmget_allocate_segment(td, uap, mode)
shm_handle->shm_object =
vm_pager_allocate(OBJT_SWAP, 0, size, VM_PROT_DEFAULT, 0);
}
+ vm_object_lock(shm_handle->shm_object);
vm_object_clear_flag(shm_handle->shm_object, OBJ_ONEMAPPING);
vm_object_set_flag(shm_handle->shm_object, OBJ_NOSPLIT);
+ vm_object_unlock(shm_handle->shm_object);
shmseg->shm_internal = shm_handle;
shmseg->shm_perm.cuid = shmseg->shm_perm.uid = cred->cr_uid;