diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c index 05dd8f7..21a5d08 100644 --- a/sys/vm/vm_fault.c +++ b/sys/vm/vm_fault.c @@ -1940,9 +1940,11 @@ vm_fault_copy_entry(vm_map_t dst_map, vm_map_t src_map, * Allocate a page in the destination object */ do { + vm_object_lock(dst_object); dst_m = vm_page_alloc(dst_object, OFF_TO_IDX(dst_offset), VM_ALLOC_NORMAL); + vm_object_unlock(dst_object); if (dst_m == NULL) { vm_wait(0); } @@ -1953,8 +1955,11 @@ vm_fault_copy_entry(vm_map_t dst_map, vm_map_t src_map, * (Because the source is wired down, the page will be in * memory.) */ + vm_object_lock(src_object); src_m = vm_page_lookup(src_object, OFF_TO_IDX(dst_offset + src_offset)); + vm_object_unlock(src_object); + if (src_m == NULL) panic("vm_fault_copy_wired: page missing");