[haiku-commits] r34958 - haiku/trunk/src/system/kernel/vm

  • From: ingo_weinhold@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 8 Jan 2010 21:39:08 +0100 (CET)

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;


Other related posts:

  • » [haiku-commits] r34958 - haiku/trunk/src/system/kernel/vm - ingo_weinhold