From 05a441afb21d436749998b12ae61dfbc95aea52c Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 15 Dec 2019 16:53:46 +0100 Subject: [PATCH] Kernel: Don't turn private read-only regions into shared ones on fork Even if they are read-only now, they can be mprotect(PROT_WRITE)'d in the future, so we have to make sure they are CoW mapped. --- Kernel/VM/Region.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Kernel/VM/Region.cpp b/Kernel/VM/Region.cpp index 32b332dadc3..822d419532f 100644 --- a/Kernel/VM/Region.cpp +++ b/Kernel/VM/Region.cpp @@ -57,7 +57,8 @@ NonnullOwnPtr Region::clone() // NOTE: Kernel-only regions should never be cloned. ASSERT(is_user_accessible()); - if (m_shared || (is_readable() && !is_writable())) { + // FIXME: What should we do for privately mapped InodeVMObjects? + if (m_shared || vmobject().is_inode()) { ASSERT(!m_stack); #ifdef MM_DEBUG dbgprintf("%s<%u> Region::clone(): sharing %s (V%p)\n",