From 821a6e8b4ce7caaed5297ae2162fa6d94519e932 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 3 Aug 2021 10:21:49 +0200 Subject: [PATCH] Kernel: Remap regions after changing purgeable VM object volatile flag Otherwise we could end up with stale page table mappings that give us erroneous Protection Violation faults when accessing valid addresses. --- Kernel/VM/AnonymousVMObject.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Kernel/VM/AnonymousVMObject.cpp b/Kernel/VM/AnonymousVMObject.cpp index 522f27a521..2e3d6f80cf 100644 --- a/Kernel/VM/AnonymousVMObject.cpp +++ b/Kernel/VM/AnonymousVMObject.cpp @@ -230,6 +230,8 @@ KResult AnonymousVMObject::set_volatile(bool is_volatile, bool& was_purged) m_volatile = true; m_was_purged = false; + + for_each_region([&](auto& region) { region.remap(); }); return KSuccess; } // When a VMObject is made non-volatile, we try to commit however many pages are not currently available. @@ -258,6 +260,7 @@ KResult AnonymousVMObject::set_volatile(bool is_volatile, bool& was_purged) m_volatile = false; m_was_purged = false; + for_each_region([&](auto& region) { region.remap(); }); return KSuccess; }