diff options
author | alc <alc@FreeBSD.org> | 2003-01-02 18:32:13 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2003-01-02 18:32:13 +0000 |
commit | 8654c9216d77c5d781ff0343624ccf57e9a40e37 (patch) | |
tree | 6f4ad31f68a30abb8ef90d37cbc7ad118153faf2 /sys/kern/sysv_shm.c | |
parent | c35e5c982ee6f57ac0459e221871447bbb663584 (diff) | |
download | FreeBSD-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.c | 2 |
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; |