Author: kib
Date: Wed Nov 20 08:47:54 2013
New Revision: 258366
URL: http://svnweb.freebsd.org/changeset/base/258366

Log:
  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

Modified:
  head/sys/vm/vm_map.c

Modified: head/sys/vm/vm_map.c
==============================================================================
--- head/sys/vm/vm_map.c        Wed Nov 20 08:45:26 2013        (r258365)
+++ head/sys/vm/vm_map.c        Wed Nov 20 08:47:54 2013        (r258366)
@@ -2288,6 +2288,9 @@ vm_map_unwire(vm_map_t map, vm_offset_t 
                 * 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 st
                 * 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
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to