aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/vm_map.c
diff options
context:
space:
mode:
authorAlan Cox <alc@FreeBSD.org>2003-06-07 02:29:17 +0000
committerAlan Cox <alc@FreeBSD.org>2003-06-07 02:29:17 +0000
commitd7fc2210444c418b241738439e6c6b97a6d4970e (patch)
tree6b07fd81cf3df794cfd512736cbfb078da009a9c /sys/vm/vm_map.c
parent5466d17c63fdf3833a0ad7a3f36542cb759e1649 (diff)
Notes
Diffstat (limited to 'sys/vm/vm_map.c')
-rw-r--r--sys/vm/vm_map.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
index 1af2f1b20c74..53b51b82e2b7 100644
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -2143,9 +2143,7 @@ vm_map_delete(vm_map_t map, vm_offset_t start, vm_offset_t end)
if (object->ref_count != 1 &&
(object->flags & (OBJ_NOSPLIT|OBJ_ONEMAPPING)) == OBJ_ONEMAPPING &&
(object->type == OBJT_DEFAULT || object->type == OBJT_SWAP)) {
- VM_OBJECT_UNLOCK(object);
vm_object_collapse(object);
- VM_OBJECT_LOCK(object);
vm_object_page_remove(object, offidxstart, offidxend, FALSE);
if (object->type == OBJT_SWAP)
swap_pager_freespace(object, offidxstart, count);
@@ -2289,7 +2287,9 @@ vm_map_copy_entry(
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_split(src_entry);
src_object = src_entry->object.vm_object;