PageMapLevel5Entry may be uninitialized in original code, which means uninitialized pointer will be modified at some circumstance. So relocate the operation of PageMapLevel5Entry++ in order to make sure the pointer could be modified only when it is uninitialized.
Cc: Dandan Bi <dandan...@intel.com> Cc: Liming Gao <liming....@intel.com> Cc: Hao A Wu <hao.a...@intel.com> Cc: Laszlo Ersek <ler...@redhat.com> Cc: Eric Dong <eric.d...@intel.com> Signed-off-by: Shenglei Zhang <shenglei.zh...@intel.com> --- MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c b/MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c index b40b7e0c9813..2389f3eb485b 100644 --- a/MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c +++ b/MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c @@ -764,7 +764,7 @@ CreateIdentityMappingPageTables ( for ( IndexOfPml5Entries = 0 ; IndexOfPml5Entries < NumberOfPml5EntriesNeeded - ; IndexOfPml5Entries++, PageMapLevel5Entry++) { + ; IndexOfPml5Entries++) { // // Each PML5 entry points to a page of PML4 entires. // So lets allocate space for them and fill them in in the IndexOfPml4Entries loop. @@ -780,6 +780,7 @@ CreateIdentityMappingPageTables ( PageMapLevel5Entry->Uint64 = (UINT64) (UINTN) PageMapLevel4Entry | AddressEncMask; PageMapLevel5Entry->Bits.ReadWrite = 1; PageMapLevel5Entry->Bits.Present = 1; + PageMapLevel5Entry++; } for ( IndexOfPml4Entries = 0 -- 2.18.0.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#45401): https://edk2.groups.io/g/devel/message/45401 Mute This Topic: https://groups.io/mt/32838114/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-