REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4614
Fix issue that IsModified is wrongly set in PageTableMap. Cc: Ray Ni <[email protected]> Cc: Laszlo Ersek <[email protected]> Cc: Rahul Kumar <[email protected]> Cc: Gerd Hoffmann <[email protected]> Cc: Crystal Lee <[email protected]> Signed-off-by: Zhiguang Liu <[email protected]> --- UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c b/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c index 36b2c4e6a3..164187f151 100644 --- a/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c +++ b/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c @@ -567,7 +567,10 @@ PageTableLibMapInLevel ( OriginalCurrentPagingEntry.Uint64 = CurrentPagingEntry->Uint64; PageTableLibSetPle (Level, CurrentPagingEntry, Offset, Attribute, &CurrentMask); - if (OriginalCurrentPagingEntry.Uint64 != CurrentPagingEntry->Uint64) { + if (Modify && (OriginalCurrentPagingEntry.Uint64 != CurrentPagingEntry->Uint64)) { + // + // The page table entry can be changed by this function only when Modify is true. + // *IsModified = TRUE; } } @@ -609,7 +612,10 @@ PageTableLibMapInLevel ( // Check if ParentPagingEntry entry is modified here is enough. Except the changes happen in leaf PagingEntry during // the while loop, if there is any other change happens in page table, the ParentPagingEntry must has been modified. // - if (OriginalParentPagingEntry.Uint64 != ParentPagingEntry->Uint64) { + if (Modify && (OriginalParentPagingEntry.Uint64 != ParentPagingEntry->Uint64)) { + // + // The page table entry can be changed by this function only when Modify is true. + // *IsModified = TRUE; } -- 2.31.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#113513): https://edk2.groups.io/g/devel/message/113513 Mute This Topic: https://groups.io/mt/103636407/21656 Group Owner: [email protected] Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
