Author: alc
Date: Mon May  3 07:00:50 2010
New Revision: 207551
URL: http://svn.freebsd.org/changeset/base/207551

Log:
  Assert that the page queues lock is held in vm_page_remove() and
  vm_page_unwire() only if the page is managed, i.e., pageable.

Modified:
  head/sys/vm/vm_page.c

Modified: head/sys/vm/vm_page.c
==============================================================================
--- head/sys/vm/vm_page.c       Mon May  3 06:26:52 2010        (r207550)
+++ head/sys/vm/vm_page.c       Mon May  3 07:00:50 2010        (r207551)
@@ -790,6 +790,8 @@ vm_page_remove(vm_page_t m)
        vm_object_t object;
        vm_page_t root;
 
+       if ((m->flags & PG_UNMANAGED) == 0)
+               mtx_assert(&vm_page_queue_mtx, MA_OWNED);
        if ((object = m->object) == NULL)
                return;
        VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
@@ -797,7 +799,6 @@ vm_page_remove(vm_page_t m)
                m->oflags &= ~VPO_BUSY;
                vm_page_flash(m);
        }
-       mtx_assert(&vm_page_queue_mtx, MA_OWNED);
 
        /*
         * Now remove from the object's list of backed pages.
@@ -1586,7 +1587,8 @@ void
 vm_page_unwire(vm_page_t m, int activate)
 {
 
-       mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+       if ((m->flags & PG_UNMANAGED) == 0)
+               mtx_assert(&vm_page_queue_mtx, MA_OWNED);
        if (m->flags & PG_FICTITIOUS)
                return;
        if (m->wire_count > 0) {
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to