Author: bonefish Date: 2010-01-08 21:39:08 +0100 (Fri, 08 Jan 2010) New Revision: 34958 Changeset: http://dev.haiku-os.org/changeset/34958/haiku Ticket: http://dev.haiku-os.org/ticket/5216 Modified: haiku/trunk/src/system/kernel/vm/vm_page.cpp Log: Don't announce page access before being sure that the page isn't busy. Fixes the erroneously trigger panic() in #5216. Modified: haiku/trunk/src/system/kernel/vm/vm_page.cpp =================================================================== --- haiku/trunk/src/system/kernel/vm/vm_page.cpp 2010-01-08 20:29:55 UTC (rev 34957) +++ haiku/trunk/src/system/kernel/vm/vm_page.cpp 2010-01-08 20:39:08 UTC (rev 34958) @@ -1659,17 +1659,16 @@ bool dequeuedPage = false; if (page != NULL) { - DEBUG_PAGE_ACCESS_START(page); - if (page->state == PAGE_STATE_MODIFIED) { + DEBUG_PAGE_ACCESS_START(page); AutoLocker<VMPageQueue> locker(sModifiedPageQueue); sModifiedPageQueue.Remove(page); dequeuedPage = true; } else if (page->state == PAGE_STATE_BUSY || !vm_test_map_modification(page)) { - DEBUG_PAGE_ACCESS_END(page); page = NULL; - } + } else + DEBUG_PAGE_ACCESS_START(page); } PageWriteWrapper* wrapper = NULL;