summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_kern.c
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2014-05-23 16:22:36 +0000
committeralc <alc@FreeBSD.org>2014-05-23 16:22:36 +0000
commit549a5817c0ebaf4934c376d9bab4bf1bfefb0471 (patch)
tree7ec6ad6d8b227f6a758502201d5127396bd55d0a /sys/vm/vm_kern.c
parenta6e74de42f82dada17c1a92bbe93462a18af3b09 (diff)
downloadFreeBSD-src-549a5817c0ebaf4934c376d9bab4bf1bfefb0471.zip
FreeBSD-src-549a5817c0ebaf4934c376d9bab4bf1bfefb0471.tar.gz
There is no reason to perform the pmap_remove() on the kernel pmap while
the kmem object lock is held. Do the pmap_remove() before acquiring the kmem object lock. MFC after: 1 week Sponsored by: EMC / Isilon Storage Division
Diffstat (limited to 'sys/vm/vm_kern.c')
-rw-r--r--sys/vm/vm_kern.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/vm/vm_kern.c b/sys/vm/vm_kern.c
index dd075c1..c0e56ce 100644
--- a/sys/vm/vm_kern.c
+++ b/sys/vm/vm_kern.c
@@ -396,9 +396,9 @@ kmem_unback(vm_object_t object, vm_offset_t addr, vm_size_t size)
KASSERT(object == kmem_object || object == kernel_object,
("kmem_unback: only supports kernel objects."));
+ pmap_remove(kernel_pmap, addr, addr + size);
offset = addr - VM_MIN_KERNEL_ADDRESS;
VM_OBJECT_WLOCK(object);
- pmap_remove(kernel_pmap, addr, addr + size);
for (i = 0; i < size; i += PAGE_SIZE) {
m = vm_page_lookup(object, OFF_TO_IDX(offset + i));
vm_page_unwire(m, 0);
OpenPOWER on IntegriCloud