diff --git a/Kernel/VM/MemoryManager.cpp b/Kernel/VM/MemoryManager.cpp index 20e5a4d46c..3ee5f39671 100644 --- a/Kernel/VM/MemoryManager.cpp +++ b/Kernel/VM/MemoryManager.cpp @@ -841,41 +841,6 @@ void MemoryManager::unquickmap_page() mm_data.m_quickmap_in_use.unlock(mm_data.m_quickmap_prev_flags); } -template -bool MemoryManager::validate_range(const Process& process, VirtualAddress base_vaddr, size_t size) const -{ - ASSERT(s_mm_lock.is_locked()); - ASSERT(size); - if (base_vaddr > base_vaddr.offset(size)) { - dbgln("Shenanigans! Asked to validate wrappy {} size={}", base_vaddr, size); - return false; - } - - VirtualAddress vaddr = base_vaddr.page_base(); - VirtualAddress end_vaddr = base_vaddr.offset(size - 1).page_base(); - if (end_vaddr < vaddr) { - dbgln("Shenanigans! Asked to validate {} size={}", base_vaddr, size); - return false; - } - const Region* region = nullptr; - while (vaddr <= end_vaddr) { - if (!region || !region->contains(vaddr)) { - if (space == AccessSpace::Kernel) - region = kernel_region_from_vaddr(vaddr); - if (!region || !region->contains(vaddr)) - region = user_region_from_vaddr(const_cast(process), vaddr); - if (!region - || (space == AccessSpace::User && !region->is_user_accessible()) - || (access_type == AccessType::Read && !region->is_readable()) - || (access_type == AccessType::Write && !region->is_writable())) { - return false; - } - } - vaddr = region->range().end(); - } - return true; -} - bool MemoryManager::validate_user_stack(const Process& process, VirtualAddress vaddr) const { if (!is_user_address(vaddr)) diff --git a/Kernel/VM/MemoryManager.h b/Kernel/VM/MemoryManager.h index b85376c181..13c3a79d78 100644 --- a/Kernel/VM/MemoryManager.h +++ b/Kernel/VM/MemoryManager.h @@ -215,19 +215,11 @@ private: void register_reserved_ranges(); - enum class AccessSpace { Kernel, - User }; - enum class AccessType { Read, - Write }; - template - bool validate_range(const Process&, VirtualAddress, size_t) const; - void register_vmobject(VMObject&); void unregister_vmobject(VMObject&); void register_region(Region&); void unregister_region(Region&); - void detect_cpu_features(); void protect_kernel_image(); void parse_memory_map(); static void flush_tlb_local(VirtualAddress, size_t page_count = 1);