From 5092813a45daab9bb44f51b1575603c0521af8c8 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 28 Jan 2022 15:02:45 +0100 Subject: [PATCH] Kernel: Quickly reject userspace addresses in kernel_region_from_vaddr() This avoids taking and releasing the MM lock just to reject an address that we can tell from just looking at it that it won't ever be in the kernel regions tree. --- Kernel/Memory/MemoryManager.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Kernel/Memory/MemoryManager.cpp b/Kernel/Memory/MemoryManager.cpp index 07eb097970..d76a802ed0 100644 --- a/Kernel/Memory/MemoryManager.cpp +++ b/Kernel/Memory/MemoryManager.cpp @@ -645,6 +645,9 @@ UNMAP_AFTER_INIT void MemoryManager::initialize(u32 cpu) Region* MemoryManager::kernel_region_from_vaddr(VirtualAddress vaddr) { + if (is_user_address(vaddr)) + return nullptr; + SpinlockLocker lock(s_mm_lock); auto* region = MM.m_kernel_regions.find_largest_not_above(vaddr.get()); if (!region || !region->contains(vaddr))