From 094b88e6a54dbc2cde11d558ae239eb8704c8898 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 15 Jan 2022 17:48:42 +0100 Subject: [PATCH] Kernel: Don't remap already non-writable regions when they become CoW The only purpose of the remap() in Region::try_clone() is to ensure non-writable page table entries for CoW regions. If a region is already non-writable, there's no need to waste time updating the page tables. --- Kernel/Memory/Region.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Kernel/Memory/Region.cpp b/Kernel/Memory/Region.cpp index d69b2ef95a..b7c741ec19 100644 --- a/Kernel/Memory/Region.cpp +++ b/Kernel/Memory/Region.cpp @@ -94,7 +94,8 @@ ErrorOr> Region::try_clone() auto vmobject_clone = TRY(vmobject().try_clone()); // Set up a COW region. The parent (this) region becomes COW as well! - remap(); + if (is_writable()) + remap(); OwnPtr clone_region_name; if (m_name)