From 2a30aab6f46a414a481dbc59d113e1f7bf2b3d48 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Fri, 8 Jan 2010 20:39:08 +0000 Subject: [PATCH] Don't announce page access before being sure that the page isn't busy. Fixes the erroneously trigger panic() in #5216. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34958 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/vm/vm_page.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/system/kernel/vm/vm_page.cpp b/src/system/kernel/vm/vm_page.cpp index 9d3f59de59..0c087f54df 100644 --- a/src/system/kernel/vm/vm_page.cpp +++ b/src/system/kernel/vm/vm_page.cpp @@ -1659,17 +1659,16 @@ vm_page_write_modified_page_range(struct VMCache* cache, uint32 firstPage, bool dequeuedPage = false; if (page != NULL) { - DEBUG_PAGE_ACCESS_START(page); - if (page->state == PAGE_STATE_MODIFIED) { + DEBUG_PAGE_ACCESS_START(page); AutoLocker 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;