From 755242719c92870f512842f50b8f8c44414248b2 Mon Sep 17 00:00:00 2001 From: apio Date: Wed, 19 Oct 2022 07:56:08 +0200 Subject: [PATCH] VMM: Add a few memsets This seems to fix exec() making weird page tables!! --- kernel/src/memory/AddressSpace.cpp | 1 + kernel/src/memory/VMM.cpp | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel/src/memory/AddressSpace.cpp b/kernel/src/memory/AddressSpace.cpp index 5cf92f8c..8e9debc1 100644 --- a/kernel/src/memory/AddressSpace.cpp +++ b/kernel/src/memory/AddressSpace.cpp @@ -12,6 +12,7 @@ AddressSpace AddressSpace::create() { AddressSpace result; result.m_pml4 = (PageTable*)PMM::request_page(); + memset(result.m_pml4, 0, PAGE_SIZE); VMM::install_kernel_page_directory_into_address_space(result); return move(result); } diff --git a/kernel/src/memory/VMM.cpp b/kernel/src/memory/VMM.cpp index 90c00f2c..605c17e2 100644 --- a/kernel/src/memory/VMM.cpp +++ b/kernel/src/memory/VMM.cpp @@ -281,7 +281,8 @@ void VMM::install_kernel_page_directory_into_address_space(AddressSpace& space) if (!space_last_pdp_pde.present) { - space_last_pdp = (PageTable*)PMM::request_page(); + space_last_pdp = (PageTable*)PMM::request_page(); // FIXME: Add out-of-memory checks. + memset(space_last_pdp, 0, PAGE_SIZE); space_last_pdp_pde.present = true; space_last_pdp_pde.read_write = true;