From c83ffd267680806483eb22c1cd9c9af83b8aa708 Mon Sep 17 00:00:00 2001 From: Zhiguang Liu Date: Mon, 27 Nov 2023 14:41:52 +0800 Subject: [PATCH] UefiCpuPkg/CpuPageTableLib: Init local variable before using it. 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. Reviewed-by: Ray Ni Cc: Rahul Kumar Cc: Gerd Hoffmann Cc: Laszlo Ersek Signed-off-by: Zhiguang Liu --- 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); }