diff options
| author | Alan Cox <alc@FreeBSD.org> | 2003-11-03 00:59:54 +0000 |
|---|---|---|
| committer | Alan Cox <alc@FreeBSD.org> | 2003-11-03 00:59:54 +0000 |
| commit | a89c6258bbcd94de26be488dcd7e9bbb75f67dac (patch) | |
| tree | 6d31eb73000165a893e1503006626445c41dadaa /sys/vm | |
| parent | 806a364b8b1073321053b6037a29b1e0906ff07a (diff) | |
Notes
Diffstat (limited to 'sys/vm')
| -rw-r--r-- | sys/vm/vm_map.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c index 956d048bc01a..021a81631202 100644 --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -2356,20 +2356,18 @@ vm_map_copy_entry( * Make a copy of the object. */ if ((src_object = src_entry->object.vm_object) != NULL) { - + VM_OBJECT_LOCK(src_object); if ((src_object->handle == NULL) && (src_object->type == OBJT_DEFAULT || src_object->type == OBJT_SWAP)) { - VM_OBJECT_LOCK(src_object); vm_object_collapse(src_object); - VM_OBJECT_UNLOCK(src_object); if ((src_object->flags & (OBJ_NOSPLIT|OBJ_ONEMAPPING)) == OBJ_ONEMAPPING) { + VM_OBJECT_UNLOCK(src_object); vm_object_split(src_entry); src_object = src_entry->object.vm_object; + VM_OBJECT_LOCK(src_object); } } - - VM_OBJECT_LOCK(src_object); vm_object_reference_locked(src_object); vm_object_clear_flag(src_object, OBJ_ONEMAPPING); VM_OBJECT_UNLOCK(src_object); |
