aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/vm_map.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/vm/vm_map.c')
-rw-r--r--sys/vm/vm_map.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
index a746d46317eb..983b3b1801f9 100644
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -2041,8 +2041,6 @@ vm_map_delete(vm_map_t map, vm_offset_t start, vm_offset_t end)
vm_map_entry_t entry;
vm_map_entry_t first_entry;
- GIANT_REQUIRED;
-
/*
* Find the start of the region, and clip it
*/
@@ -2091,8 +2089,10 @@ vm_map_delete(vm_map_t map, vm_offset_t start, vm_offset_t end)
offidxend = offidxstart + count;
if ((object == kernel_object) || (object == kmem_object)) {
+ GIANT_REQUIRED;
vm_object_page_remove(object, offidxstart, offidxend, FALSE);
} else {
+ mtx_lock(&Giant);
pmap_remove(map->pmap, s, e);
if (object != NULL &&
object->ref_count != 1 &&
@@ -2108,6 +2108,7 @@ vm_map_delete(vm_map_t map, vm_offset_t start, vm_offset_t end)
object->size = offidxstart;
}
}
+ mtx_unlock(&Giant);
}
/*
@@ -2133,8 +2134,6 @@ vm_map_remove(vm_map_t map, vm_offset_t start, vm_offset_t end)
{
int result, s = 0;
- GIANT_REQUIRED;
-
if (map == kmem_map)
s = splvm();