aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/vm/vm_fault.c3
-rw-r--r--sys/vm/vm_map.c7
-rw-r--r--sys/vm/vm_mmap.c2
3 files changed, 5 insertions, 7 deletions
diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index 9cfe1cee4bb6..3e0edeb17417 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -979,12 +979,12 @@ vm_fault_unwire(map, start, end)
vm_map_t map;
vm_offset_t start, end;
{
-
vm_offset_t va, pa;
pmap_t pmap;
pmap = vm_map_pmap(map);
+ mtx_lock(&Giant);
/*
* Since the pages are wired down, we must be able to get their
* mappings from the physical map system.
@@ -1003,6 +1003,7 @@ vm_fault_unwire(map, start, end)
*/
pmap_pageable(pmap, start, end, TRUE);
+ mtx_unlock(&Giant);
}
/*
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();
diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c
index 750ab07f7e27..c0033536212a 100644
--- a/sys/vm/vm_mmap.c
+++ b/sys/vm/vm_mmap.c
@@ -615,9 +615,7 @@ munmap(td, uap)
return (EINVAL);
/* returns nothing but KERN_SUCCESS anyway */
- mtx_lock(&Giant);
(void) vm_map_remove(map, addr, addr + size);
- mtx_unlock(&Giant);
return (0);
}