Changeset View
Changeset View
Standalone View
Standalone View
sys/vm/vm_map.c
Show First 20 Lines • Show All 3,279 Lines • ▼ Show 20 Lines | if ((src_object = src_entry->object.vm_object) != NULL) { | ||||
VM_OBJECT_WLOCK(src_object); | VM_OBJECT_WLOCK(src_object); | ||||
charged = ENTRY_CHARGED(src_entry); | charged = ENTRY_CHARGED(src_entry); | ||||
if (src_object->handle == NULL && | if (src_object->handle == NULL && | ||||
(src_object->type == OBJT_DEFAULT || | (src_object->type == OBJT_DEFAULT || | ||||
src_object->type == OBJT_SWAP)) { | src_object->type == OBJT_SWAP)) { | ||||
vm_object_collapse(src_object); | vm_object_collapse(src_object); | ||||
if ((src_object->flags & (OBJ_NOSPLIT | | if ((src_object->flags & (OBJ_NOSPLIT | | ||||
OBJ_ONEMAPPING)) == OBJ_ONEMAPPING) { | OBJ_ONEMAPPING)) == OBJ_ONEMAPPING) { | ||||
/* | |||||
* Make sure faults see the split. | |||||
*/ | |||||
src_map->timestamp++; | |||||
alc: vmspace_fork() calls vm_map_lock() on src_map, just spelled differently as old_map. | |||||
kibAuthorUnsubmitted Done Inline ActionsIndeed, I missed this. This chunk is excessive. kib: Indeed, I missed this. This chunk is excessive. | |||||
vm_object_split(src_entry); | vm_object_split(src_entry); | ||||
src_object = | src_object = | ||||
src_entry->object.vm_object; | src_entry->object.vm_object; | ||||
} | } | ||||
} | } | ||||
vm_object_reference_locked(src_object); | vm_object_reference_locked(src_object); | ||||
vm_object_clear_flag(src_object, OBJ_ONEMAPPING); | vm_object_clear_flag(src_object, OBJ_ONEMAPPING); | ||||
if (src_entry->cred != NULL && | if (src_entry->cred != NULL && | ||||
▲ Show 20 Lines • Show All 1,143 Lines • Show Last 20 Lines |
vmspace_fork() calls vm_map_lock() on src_map, just spelled differently as old_map. vm_map_lock already increments src_map's timestamp, so I don't see why this increment is necessary.