summaryrefslogtreecommitdiffstats
path: root/sys/kern/sysv_shm.c
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2003-01-02 18:32:13 +0000
committeralc <alc@FreeBSD.org>2003-01-02 18:32:13 +0000
commit8654c9216d77c5d781ff0343624ccf57e9a40e37 (patch)
tree6f4ad31f68a30abb8ef90d37cbc7ad118153faf2 /sys/kern/sysv_shm.c
parentc35e5c982ee6f57ac0459e221871447bbb663584 (diff)
downloadFreeBSD-src-8654c9216d77c5d781ff0343624ccf57e9a40e37.zip
FreeBSD-src-8654c9216d77c5d781ff0343624ccf57e9a40e37.tar.gz
Lock the vm object when performing back-to-back vm_object_clear_flag() and
vm_object_set_flag().
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 8baa579..6c9d34a 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;
OpenPOWER on IntegriCloud