summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_map.c
diff options
context:
space:
mode:
authorgreen <green@FreeBSD.org>2004-08-16 03:11:09 +0000
committergreen <green@FreeBSD.org>2004-08-16 03:11:09 +0000
commitd4f662585f29ddfad5c1b8e2b6ceb308fb8ae058 (patch)
tree963169bd2f79c5c2c1a2c324298e7638c99a7a76 /sys/vm/vm_map.c
parent1de6d6df05dc75c48597f345ef9a8372bc906d67 (diff)
downloadFreeBSD-src-d4f662585f29ddfad5c1b8e2b6ceb308fb8ae058.zip
FreeBSD-src-d4f662585f29ddfad5c1b8e2b6ceb308fb8ae058.tar.gz
Rather than bringing back all of the changes to make VM map deletion
wait for system wires to disappear, do so (much more trivially) by instead only checking for system wires of user maps and not kernel maps. Alternative by: tor Reviewed by: alc
Diffstat (limited to 'sys/vm/vm_map.c')
-rw-r--r--sys/vm/vm_map.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
index b96d8ce..765126c 100644
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -2236,8 +2236,12 @@ vm_map_delete(vm_map_t map, vm_offset_t start, vm_offset_t end)
/*
* Wait for wiring or unwiring of an entry to complete.
+ * Also wait for any system wirings to disappear on
+ * user maps.
*/
- if ((entry->eflags & MAP_ENTRY_IN_TRANSITION) != 0) {
+ if ((entry->eflags & MAP_ENTRY_IN_TRANSITION) != 0 ||
+ (vm_map_pmap(map) != kernel_pmap &&
+ vm_map_entry_system_wired_count(entry) != 0)) {
unsigned int last_timestamp;
vm_offset_t saved_start;
vm_map_entry_t tmp_entry;
OpenPOWER on IntegriCloud