svn commit: r207551 - head/sys/vm

Alan Cox alc at FreeBSD.org
Mon May 3 07:00:50 UTC 2010


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) {


More information about the svn-src-all mailing list