diff --git a/Kernel/Heap/kmalloc.cpp b/Kernel/Heap/kmalloc.cpp index c35f818314..b27a4886c9 100644 --- a/Kernel/Heap/kmalloc.cpp +++ b/Kernel/Heap/kmalloc.cpp @@ -354,7 +354,7 @@ struct KmallocGlobalData { void enable_expansion() { // FIXME: This range can be much bigger on 64-bit, but we need to figure something out for 32-bit. - auto reserved_region = MUST(MM.region_tree().allocate_unbacked_anywhere(64 * MiB, 1 * MiB)); + auto reserved_region = MUST(MM.allocate_unbacked_region_anywhere(64 * MiB, 1 * MiB)); expansion_data = KmallocGlobalData::ExpansionData { .virtual_range = reserved_region->range(), diff --git a/Kernel/Memory/MemoryManager.cpp b/Kernel/Memory/MemoryManager.cpp index 627bce7cb0..b7c75fc72b 100644 --- a/Kernel/Memory/MemoryManager.cpp +++ b/Kernel/Memory/MemoryManager.cpp @@ -1242,4 +1242,11 @@ ErrorOr> MemoryManager::create_identity_mapped_reg return region; } +ErrorOr> MemoryManager::allocate_unbacked_region_anywhere(size_t size, size_t alignment) +{ + auto region = TRY(Region::create_unbacked()); + TRY(m_region_tree.place_anywhere(*region, RandomizeVirtualAddress::No, size, alignment)); + return region; +} + } diff --git a/Kernel/Memory/MemoryManager.h b/Kernel/Memory/MemoryManager.h index 4f8d1fc357..e49b95e532 100644 --- a/Kernel/Memory/MemoryManager.h +++ b/Kernel/Memory/MemoryManager.h @@ -188,6 +188,7 @@ public: ErrorOr> allocate_kernel_region(size_t, StringView name, Region::Access access, AllocationStrategy strategy = AllocationStrategy::Reserve, Region::Cacheable = Region::Cacheable::Yes); ErrorOr> allocate_kernel_region(PhysicalAddress, size_t, StringView name, Region::Access access, Region::Cacheable = Region::Cacheable::Yes); ErrorOr> allocate_kernel_region_with_vmobject(VMObject&, size_t, StringView name, Region::Access access, Region::Cacheable = Region::Cacheable::Yes); + ErrorOr> allocate_unbacked_region_anywhere(size_t size, size_t alignment); ErrorOr> create_identity_mapped_region(PhysicalAddress, size_t); struct SystemMemoryInfo { diff --git a/Kernel/Memory/RegionTree.cpp b/Kernel/Memory/RegionTree.cpp index f512a25677..81d1fffe7c 100644 --- a/Kernel/Memory/RegionTree.cpp +++ b/Kernel/Memory/RegionTree.cpp @@ -129,13 +129,6 @@ ErrorOr RegionTree::allocate_range_randomized(size_t size, size_t return allocate_range_anywhere(size, alignment); } -ErrorOr> RegionTree::allocate_unbacked_anywhere(size_t size, size_t alignment) -{ - auto region = TRY(Region::create_unbacked()); - TRY(place_anywhere(*region, RandomizeVirtualAddress::No, size, alignment)); - return region; -} - ErrorOr RegionTree::place_anywhere(Region& region, RandomizeVirtualAddress randomize_virtual_address, size_t size, size_t alignment) { SpinlockLocker locker(m_lock); diff --git a/Kernel/Memory/RegionTree.h b/Kernel/Memory/RegionTree.h index 50623ee02f..93f6047bfb 100644 --- a/Kernel/Memory/RegionTree.h +++ b/Kernel/Memory/RegionTree.h @@ -40,8 +40,6 @@ public: VirtualRange total_range() const { return m_total_range; } - ErrorOr> allocate_unbacked_anywhere(size_t size, size_t alignment = PAGE_SIZE); - ErrorOr place_anywhere(Region&, RandomizeVirtualAddress, size_t size, size_t alignment = PAGE_SIZE); ErrorOr place_specifically(Region&, VirtualRange const&);