Zero-initialize Page Directory entries before use
Some checks failed
Builds / ExectOS (amd64, debug) (push) Failing after 31s
Builds / ExectOS (amd64, release) (push) Failing after 31s
Builds / ExectOS (i686, debug) (push) Successful in 45s
Builds / ExectOS (i686, release) (push) Successful in 42s

This commit is contained in:
Aiken Harris 2025-07-30 17:19:37 +02:00 committed by CodingWorkshop Signing Team
parent 66e136c7d6
commit 410b96b58a
Signed by: CodingWorkshop Signing Team
GPG Key ID: 6DC88369C82795D2

View File

@ -216,6 +216,7 @@ BlMapPage(IN PXTBL_PAGE_MAPPING PageMap,
} }
/* Set paging entry settings */ /* Set paging entry settings */
RtlZeroMemory(&Pml1[Pml1Entry], sizeof(HARDWARE_PTE));
Pml1[Pml1Entry].PageFrameNumber = PageFrameNumber; Pml1[Pml1Entry].PageFrameNumber = PageFrameNumber;
Pml1[Pml1Entry].Valid = 1; Pml1[Pml1Entry].Valid = 1;
Pml1[Pml1Entry].Writable = 1; Pml1[Pml1Entry].Writable = 1;
@ -250,8 +251,12 @@ EFI_STATUS
BlpSelfMapPml(IN PXTBL_PAGE_MAPPING PageMap, BlpSelfMapPml(IN PXTBL_PAGE_MAPPING PageMap,
IN ULONG_PTR SelfMapAddress) IN ULONG_PTR SelfMapAddress)
{ {
PHARDWARE_PTE PmlBase;
ULONGLONG PmlIndex; ULONGLONG PmlIndex;
/* Initialize PML base pointer */
PmlBase = (PHARDWARE_PTE)PageMap->PtePointer;
/* Check page map level */ /* Check page map level */
if(PageMap->PageMapLevel == 5) if(PageMap->PageMapLevel == 5)
{ {
@ -265,9 +270,10 @@ BlpSelfMapPml(IN PXTBL_PAGE_MAPPING PageMap,
PmlIndex = (SelfMapAddress >> MM_PXI_SHIFT) & 0x1FF; PmlIndex = (SelfMapAddress >> MM_PXI_SHIFT) & 0x1FF;
/* Add self-mapping for PML4 */ /* Add self-mapping for PML4 */
((PHARDWARE_PTE)PageMap->PtePointer)[PmlIndex].PageFrameNumber = (UINT_PTR)PageMap->PtePointer / EFI_PAGE_SIZE; RtlZeroMemory(&PmlBase[PmlIndex], sizeof(HARDWARE_PTE));
((PHARDWARE_PTE)PageMap->PtePointer)[PmlIndex].Valid = 1; PmlBase[PmlIndex].PageFrameNumber = PmlBasePfn;
((PHARDWARE_PTE)PageMap->PtePointer)[PmlIndex].Writable = 1; PmlBase[PmlIndex].Valid = 1;
PmlBase[PmlIndex].Writable = 1;
} }
/* Return success */ /* Return success */