summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2013-11-20 08:47:54 +0000
committerkib <kib@FreeBSD.org>2013-11-20 08:47:54 +0000
commit2f482609dbde658669c7ca3b0002ef13352c5cbe (patch)
tree80de40bbea538c618b3d52d26d12d2944113b024 /sys/vm
parent3c8b0e84289d8f66480aa05585c41dccd7dd58a9 (diff)
downloadFreeBSD-src-2f482609dbde658669c7ca3b0002ef13352c5cbe.zip
FreeBSD-src-2f482609dbde658669c7ca3b0002ef13352c5cbe.tar.gz
Add assertions to cover all places in the wiring and unwiring code
where MAP_ENTRY_IN_TRANSITION is set or cleared. Tested by: pho Reviewed by: alc Sponsored by: The FreeBSD Foundation MFC after: 1 week
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/vm_map.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
index 2e40bbd..3fb5730 100644
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -2288,6 +2288,9 @@ vm_map_unwire(vm_map_t map, vm_offset_t start, vm_offset_t end,
* Mark the entry in case the map lock is released. (See
* above.)
*/
+ KASSERT((entry->eflags & MAP_ENTRY_IN_TRANSITION) == 0 &&
+ entry->wiring_thread == NULL,
+ ("owned map entry %p", entry));
entry->eflags |= MAP_ENTRY_IN_TRANSITION;
entry->wiring_thread = curthread;
/*
@@ -2356,7 +2359,9 @@ done:
}
}
KASSERT((entry->eflags & MAP_ENTRY_IN_TRANSITION) != 0,
- ("vm_map_unwire: in-transition flag missing"));
+ ("vm_map_unwire: in-transition flag missing %p", entry));
+ KASSERT(entry->wiring_thread == curthread,
+ ("vm_map_unwire: alien wire %p", entry));
entry->eflags &= ~MAP_ENTRY_IN_TRANSITION;
entry->wiring_thread = NULL;
if (entry->eflags & MAP_ENTRY_NEEDS_WAKEUP) {
@@ -2456,6 +2461,9 @@ vm_map_wire(vm_map_t map, vm_offset_t start, vm_offset_t end,
* Mark the entry in case the map lock is released. (See
* above.)
*/
+ KASSERT((entry->eflags & MAP_ENTRY_IN_TRANSITION) == 0 &&
+ entry->wiring_thread == NULL,
+ ("owned map entry %p", entry));
entry->eflags |= MAP_ENTRY_IN_TRANSITION;
entry->wiring_thread = curthread;
if ((entry->protection & (VM_PROT_READ | VM_PROT_EXECUTE)) == 0
OpenPOWER on IntegriCloud