summaryrefslogtreecommitdiffstats
path: root/sys
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
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')
-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