From f40740a51e97141b1713f90e72b8fcc356e596f4 Mon Sep 17 00:00:00 2001 From: kib Date: Sat, 1 Jul 2017 03:39:38 +0000 Subject: [PATCH] MFC r320316: Do not try to unmark MAP_ENTRY_IN_TRANSITION marked by other thread. git-svn-id: svn://svn.freebsd.org/base/stable/10@320526 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- sys/vm/vm_map.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c index fb2102679..ba2fca1a6 100644 --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -2658,9 +2658,6 @@ vm_map_wire(vm_map_t map, vm_offset_t start, vm_offset_t end, } for (entry = first_entry; entry != &map->header && entry->start < end; entry = entry->next) { - if ((entry->eflags & MAP_ENTRY_WIRE_SKIPPED) != 0) - goto next_entry_done; - /* * If VM_MAP_WIRE_HOLESOK was specified, an empty * space in the unwired region could have been mapped @@ -2668,7 +2665,7 @@ vm_map_wire(vm_map_t map, vm_offset_t start, vm_offset_t end, * pages or draining MAP_ENTRY_IN_TRANSITION. * Moreover, another thread could be simultaneously * wiring this new mapping entry. Detect these cases - * and skip any entries marked as in transition by us. + * and skip any entries marked as in transition not by us. */ if ((entry->eflags & MAP_ENTRY_IN_TRANSITION) == 0 || entry->wiring_thread != curthread) { @@ -2677,6 +2674,9 @@ vm_map_wire(vm_map_t map, vm_offset_t start, vm_offset_t end, continue; } + if ((entry->eflags & MAP_ENTRY_WIRE_SKIPPED) != 0) + goto next_entry_done; + if (rv == KERN_SUCCESS) { if (user_wire) entry->eflags |= MAP_ENTRY_USER_WIRED; -- 2.45.0