The local variable OneOfPagingEntry is used before initialized, this may cause reserved bit in page table entry is set especially in PAE paging mode. The bug is random because it depends on the value in stack.
Cc: Ray Ni <[email protected]> Cc: Rahul Kumar <[email protected]> Cc: Gerd Hoffmann <[email protected]> Cc: Laszlo Ersek <[email protected]> Signed-off-by: Zhiguang Liu <[email protected]> --- UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c b/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c index eff02619fa..36b2c4e6a3 100644 --- a/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c +++ b/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c @@ -338,7 +338,7 @@ PageTableLibMapInLevel ( ParentAttribute = &LocalParentAttribute; OriginalParentPagingEntry.Uint64 = ParentPagingEntry->Uint64; - + OneOfPagingEntry.Uint64 = 0; // // RegionLength: 256T (1 << 48) 512G (1 << 39), 1G (1 << 30), 2M (1 << 21) or 4K (1 << 12). // @@ -367,8 +367,6 @@ PageTableLibMapInLevel ( if (RETURN_ERROR (Status)) { return Status; } - - OneOfPagingEntry.Pnle.Uint64 = 0; } else { PageTableLibSetPle (Level, &OneOfPagingEntry, 0, &PleBAttribute, &AllOneMask); } -- 2.31.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#111729): https://edk2.groups.io/g/devel/message/111729 Mute This Topic: https://groups.io/mt/102825574/21656 Group Owner: [email protected] Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
