diff options
author | Jian J Wang <jian.j.wang@intel.com> | 2017-12-16 17:22:35 +0800 |
---|---|---|
committer | Star Zeng <star.zeng@intel.com> | 2017-12-19 15:19:46 +0800 |
commit | 3d817fd11af6a4981978f6c0d5648ce470aa92b5 (patch) | |
tree | 5e5ffa65fea02c5992aaf2918a19fcd02da2cc22 /MdeModulePkg | |
parent | e9dfa1b519cddfb7ceb93706d527ac25f36606c2 (diff) | |
download | edk2-3d817fd11af6a4981978f6c0d5648ce470aa92b5.tar.gz edk2-3d817fd11af6a4981978f6c0d5648ce470aa92b5.tar.bz2 edk2-3d817fd11af6a4981978f6c0d5648ce470aa92b5.zip |
MdeModulePkg/Core: Fix incorrect memory map generated in a rare case
The root cause is that mImagePropertiesPrivateData.CodeSegmentCountMax was
not updated with correct value due to the fact that SortImageRecord() called
before might change the content of current ImageRecord. This will in turn
cause incorrect memory map entries generated in SplitTable().
Cc: Star Zeng <star.zeng@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Jian J Wang <jian.j.wang@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
Diffstat (limited to 'MdeModulePkg')
-rw-r--r-- | MdeModulePkg/Core/Dxe/Misc/PropertiesTable.c | 4 | ||||
-rw-r--r-- | MdeModulePkg/Core/PiSmmCore/MemoryAttributesTable.c | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/MdeModulePkg/Core/Dxe/Misc/PropertiesTable.c b/MdeModulePkg/Core/Dxe/Misc/PropertiesTable.c index 75d9b14c1f..a84507df95 100644 --- a/MdeModulePkg/Core/Dxe/Misc/PropertiesTable.c +++ b/MdeModulePkg/Core/Dxe/Misc/PropertiesTable.c @@ -1229,12 +1229,12 @@ InsertImageRecord ( InsertTailList (&mImagePropertiesPrivateData.ImageRecordList, &ImageRecord->Link);
mImagePropertiesPrivateData.ImageRecordCount++;
- SortImageRecord ();
-
if (mImagePropertiesPrivateData.CodeSegmentCountMax < ImageRecord->CodeSegmentCount) {
mImagePropertiesPrivateData.CodeSegmentCountMax = ImageRecord->CodeSegmentCount;
}
+ SortImageRecord ();
+
Finish:
return ;
}
diff --git a/MdeModulePkg/Core/PiSmmCore/MemoryAttributesTable.c b/MdeModulePkg/Core/PiSmmCore/MemoryAttributesTable.c index e3c505ef18..36ccf65fa3 100644 --- a/MdeModulePkg/Core/PiSmmCore/MemoryAttributesTable.c +++ b/MdeModulePkg/Core/PiSmmCore/MemoryAttributesTable.c @@ -1214,12 +1214,12 @@ SmmInsertImageRecord ( InsertTailList (&mImagePropertiesPrivateData.ImageRecordList, &ImageRecord->Link);
mImagePropertiesPrivateData.ImageRecordCount++;
- SortImageRecord ();
-
if (mImagePropertiesPrivateData.CodeSegmentCountMax < ImageRecord->CodeSegmentCount) {
mImagePropertiesPrivateData.CodeSegmentCountMax = ImageRecord->CodeSegmentCount;
}
+ SortImageRecord ();
+
Finish:
return ;
}
|