diff --git a/Kernel/KBuffer.h b/Kernel/KBuffer.h index 12ccea616e..70e56ce3c4 100644 --- a/Kernel/KBuffer.h +++ b/Kernel/KBuffer.h @@ -19,7 +19,7 @@ class KBufferImpl : public RefCounted { public: static NonnullRefPtr create_with_size(size_t size) { - auto region = MM.allocate_kernel_region(PAGE_ROUND_UP(size), "KBuffer"); + auto region = MM.allocate_kernel_region(PAGE_ROUND_UP(size), "KBuffer", false, false); ASSERT(region); return adopt(*new KBufferImpl(*region, size)); } diff --git a/Kernel/VM/MemoryManager.cpp b/Kernel/VM/MemoryManager.cpp index ae73156766..19e4f65058 100644 --- a/Kernel/VM/MemoryManager.cpp +++ b/Kernel/VM/MemoryManager.cpp @@ -461,7 +461,7 @@ PageFaultResponse MemoryManager::handle_page_fault(const PageFault& fault) return PageFaultResponse::ShouldCrash; } -RefPtr MemoryManager::allocate_kernel_region(size_t size, const StringView& name, bool user_accessible) +RefPtr MemoryManager::allocate_kernel_region(size_t size, const StringView& name, bool user_accessible, bool should_commit) { InterruptDisabler disabler; ASSERT(!(size % PAGE_SIZE)); @@ -474,7 +474,8 @@ RefPtr MemoryManager::allocate_kernel_region(size_t size, const StringVi region = Region::create_kernel_only(range, name, PROT_READ | PROT_WRITE | PROT_EXEC, false); MM.map_region_at_address(*m_kernel_page_directory, *region, range.base()); // FIXME: It would be cool if these could zero-fill on demand instead. - region->commit(); + if (should_commit) + region->commit(); return region; } diff --git a/Kernel/VM/MemoryManager.h b/Kernel/VM/MemoryManager.h index 255c1a39ee..55c730520c 100644 --- a/Kernel/VM/MemoryManager.h +++ b/Kernel/VM/MemoryManager.h @@ -71,7 +71,7 @@ public: void map_for_kernel(VirtualAddress, PhysicalAddress); - RefPtr allocate_kernel_region(size_t, const StringView& name, bool user_accessible = false); + RefPtr allocate_kernel_region(size_t, const StringView& name, bool user_accessible = false, bool should_commit = true); RefPtr allocate_user_accessible_kernel_region(size_t, const StringView& name); void map_region_at_address(PageDirectory&, Region&, VirtualAddress);