From dce8d473d51146643c317fde960080f2e65fd791 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Tue, 12 Aug 2008 00:08:33 +0000 Subject: [PATCH] When freeing the swap space associated with a page, the page must be marked modified again, so that we don't lose its data when someone decides to steal it. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26939 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/vm/vm_daemons.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/system/kernel/vm/vm_daemons.cpp b/src/system/kernel/vm/vm_daemons.cpp index 8c30e9f7a0..ed0d2a374d 100644 --- a/src/system/kernel/vm/vm_daemons.cpp +++ b/src/system/kernel/vm/vm_daemons.cpp @@ -168,7 +168,12 @@ free_page_swap_space(int32 index) && page->cache->HasPage(page->cache_offset << PAGE_SHIFT) && page->usage_count > 0) { // TODO: how to judge a page is highly active? - return swap_free_page_swap_space(page); + if (swap_free_page_swap_space(page)) { + // We need to mark the page modified, since otherwise it could be + // stolen and we'd lose its data. + vm_page_set_state(page, PAGE_STATE_MODIFIED); + return true; + } } return false; }