From 47beab926d340cae5983fa7f5e35c8b0ead4e34c Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 2 Mar 2020 10:46:24 +0100 Subject: [PATCH] Kernel: Remove ability to create kernel-only regions at user addresses This was only used by the mechanism for mapping executables into each process's own address space. Now that we remap executables on demand when needed for symbolication, this can go away. --- Kernel/Process.cpp | 16 ++++++---------- Kernel/Process.h | 4 ++-- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 9d67b06681..3f6679b1f0 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -207,7 +207,7 @@ Region* Process::allocate_region(VirtualAddress vaddr, size_t size, const String return allocate_region(range, name, prot, commit); } -Region* Process::allocate_region_with_vmobject(const Range& range, NonnullRefPtr vmobject, size_t offset_in_vmobject, const String& name, int prot, bool user_accessible) +Region* Process::allocate_region_with_vmobject(const Range& range, NonnullRefPtr vmobject, size_t offset_in_vmobject, const String& name, int prot) { ASSERT(range.is_valid()); size_t end_in_vmobject = offset_in_vmobject + range.size(); @@ -224,21 +224,17 @@ Region* Process::allocate_region_with_vmobject(const Range& range, NonnullRefPtr return nullptr; } offset_in_vmobject &= PAGE_MASK; - Region* region; - if (user_accessible) - region = &add_region(Region::create_user_accessible(range, move(vmobject), offset_in_vmobject, name, prot_to_region_access_flags(prot))); - else - region = &add_region(Region::create_kernel_only(range, move(vmobject), offset_in_vmobject, name, prot_to_region_access_flags(prot))); - region->map(page_directory()); - return region; + auto& region = add_region(Region::create_user_accessible(range, move(vmobject), offset_in_vmobject, name, prot_to_region_access_flags(prot))); + region.map(page_directory()); + return ®ion; } -Region* Process::allocate_region_with_vmobject(VirtualAddress vaddr, size_t size, NonnullRefPtr vmobject, size_t offset_in_vmobject, const String& name, int prot, bool user_accessible) +Region* Process::allocate_region_with_vmobject(VirtualAddress vaddr, size_t size, NonnullRefPtr vmobject, size_t offset_in_vmobject, const String& name, int prot) { auto range = allocate_range(vaddr, size); if (!range.is_valid()) return nullptr; - return allocate_region_with_vmobject(range, move(vmobject), offset_in_vmobject, name, prot, user_accessible); + return allocate_region_with_vmobject(range, move(vmobject), offset_in_vmobject, name, prot); } bool Process::deallocate_region(Region& region) diff --git a/Kernel/Process.h b/Kernel/Process.h index 66424c9c50..3aa698cf8e 100644 --- a/Kernel/Process.h +++ b/Kernel/Process.h @@ -366,9 +366,9 @@ public: bool is_superuser() const { return m_euid == 0; } - Region* allocate_region_with_vmobject(VirtualAddress, size_t, NonnullRefPtr, size_t offset_in_vmobject, const String& name, int prot, bool user_accessible = true); + Region* allocate_region_with_vmobject(VirtualAddress, size_t, NonnullRefPtr, size_t offset_in_vmobject, const String& name, int prot); Region* allocate_region(VirtualAddress, size_t, const String& name, int prot = PROT_READ | PROT_WRITE, bool commit = true); - Region* allocate_region_with_vmobject(const Range&, NonnullRefPtr, size_t offset_in_vmobject, const String& name, int prot, bool user_accessible = true); + Region* allocate_region_with_vmobject(const Range&, NonnullRefPtr, size_t offset_in_vmobject, const String& name, int prot); Region* allocate_region(const Range&, const String& name, int prot = PROT_READ | PROT_WRITE, bool commit = true); bool deallocate_region(Region& region);