summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2002-05-05 05:36:28 +0000
committeralc <alc@FreeBSD.org>2002-05-05 05:36:28 +0000
commit7e1b68b6e0ebd9125f75b4f5f6c9367c93f1a0be (patch)
tree40648eda8aac1ce5f9efedd9e06b8f44805a45c6
parent4565d6d2ab8be7f6f88d3fdf33c265100474c080 (diff)
downloadFreeBSD-src-7e1b68b6e0ebd9125f75b4f5f6c9367c93f1a0be.zip
FreeBSD-src-7e1b68b6e0ebd9125f75b4f5f6c9367c93f1a0be.tar.gz
o Remove GIANT_REQUIRED from vm_map_lookup() and vm_map_lookup_done().
o Acquire and release Giant around vm_map_lookup()'s call to vm_object_shadow().
-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 8a7eebe..b7f99096 100644
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -2763,7 +2763,6 @@ vm_map_lookup(vm_map_t *var_map, /* IN/OUT */
vm_prot_t prot;
vm_prot_t fault_type = fault_typea;
- GIANT_REQUIRED;
RetryLookup:;
/*
* Lookup the faulting address.
@@ -2857,10 +2856,12 @@ RetryLookup:;
*/
if (vm_map_lock_upgrade(map))
goto RetryLookup;
+ mtx_lock(&Giant);
vm_object_shadow(
&entry->object.vm_object,
&entry->offset,
atop(entry->end - entry->start));
+ mtx_unlock(&Giant);
entry->eflags &= ~MAP_ENTRY_NEEDS_COPY;
vm_map_lock_downgrade(map);
} else {
@@ -2913,7 +2914,6 @@ vm_map_lookup_done(vm_map_t map, vm_map_entry_t entry)
/*
* Unlock the main-level map
*/
- GIANT_REQUIRED;
vm_map_unlock_read(map);
}
OpenPOWER on IntegriCloud