forked from xt-sys/exectos
Zero-initialize Page Directory entries before use
This commit is contained in:
parent
66e136c7d6
commit
410b96b58a
@ -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 */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user