From 3ff88a1d773f6dd2a587b25a797962e5d8edfa83 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 26 Jan 2021 17:05:36 +0100 Subject: [PATCH] Kernel: Assert on attempt to map private region backed by shared inode If we find ourselves with a user-accessible, non-shared Region backed by a SharedInodeVMObject, that's pretty bad news, so let's just panic the kernel instead of getting abused. There might be a better place for this kind of check, so I've added a FIXME about putting more thought into that. --- Kernel/VM/Region.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Kernel/VM/Region.cpp b/Kernel/VM/Region.cpp index 3c8dadb4f4d..ed066d30348 100644 --- a/Kernel/VM/Region.cpp +++ b/Kernel/VM/Region.cpp @@ -378,6 +378,12 @@ bool Region::map(PageDirectory& page_directory) { ScopedSpinLock lock(s_mm_lock); ScopedSpinLock page_lock(page_directory.get_lock()); + + // FIXME: Find a better place for this sanity check(?) + if (is_user_accessible() && !is_shared()) { + ASSERT(!vmobject().is_shared_inode()); + } + set_page_directory(page_directory); size_t page_index = 0; while (page_index < page_count()) {