From 93495b0354d5256d379e4b9ac5a129539658a2cb Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Wed, 18 Sep 2013 00:21:04 +0200 Subject: [PATCH] X86PagingStructuresPAE: clear fVirtualPageDirs in constructor ... not just the first element. Fixes a crash in X86VMTranslationMapPAE destructor when running out of memory when initializing the map. --- .../kernel/arch/x86/paging/pae/X86PagingStructuresPAE.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/system/kernel/arch/x86/paging/pae/X86PagingStructuresPAE.cpp b/src/system/kernel/arch/x86/paging/pae/X86PagingStructuresPAE.cpp index 75dab1fc11..efffa60ee2 100644 --- a/src/system/kernel/arch/x86/paging/pae/X86PagingStructuresPAE.cpp +++ b/src/system/kernel/arch/x86/paging/pae/X86PagingStructuresPAE.cpp @@ -21,7 +21,7 @@ X86PagingStructuresPAE::X86PagingStructuresPAE() { - fVirtualPageDirs[0] = NULL; + memset(fVirtualPageDirs, 0, sizeof(fVirtualPageDirs)); } @@ -29,6 +29,7 @@ X86PagingStructuresPAE::~X86PagingStructuresPAE() { // free the user page dirs free(fVirtualPageDirs[0]); + // There's one contiguous allocation for 0 and 1. // free the PDPT page X86PagingMethodPAE::Method()->Free32BitPage(fPageDirPointerTable,