mirror of https://github.com/acidanthera/audk.git
MdeModulePkg/Dxe: Move assertions inside CoreInsertGcdMapEntry()
CoreInsertGcdMapEntry() does not assume the new region could overlap two existing GCDs. In this case, we need to call this function twice and the TopEntry or BottomEntry could have been updated by the previous call. Reviewed by: rsun3 Reviewed by: lgao4 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12097 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
d1cab2b8c1
commit
f75316c3ab
|
@ -393,10 +393,10 @@ CoreInsertGcdMapEntry (
|
|||
)
|
||||
{
|
||||
ASSERT (Length != 0);
|
||||
ASSERT (TopEntry->Signature == 0);
|
||||
ASSERT (BottomEntry->Signature == 0);
|
||||
|
||||
if (BaseAddress > Entry->BaseAddress) {
|
||||
ASSERT (BottomEntry->Signature == 0);
|
||||
|
||||
CopyMem (BottomEntry, Entry, sizeof (EFI_GCD_MAP_ENTRY));
|
||||
Entry->BaseAddress = BaseAddress;
|
||||
BottomEntry->EndAddress = BaseAddress - 1;
|
||||
|
@ -404,6 +404,8 @@ CoreInsertGcdMapEntry (
|
|||
}
|
||||
|
||||
if ((BaseAddress + Length - 1) < Entry->EndAddress) {
|
||||
ASSERT (TopEntry->Signature == 0);
|
||||
|
||||
CopyMem (TopEntry, Entry, sizeof (EFI_GCD_MAP_ENTRY));
|
||||
TopEntry->BaseAddress = BaseAddress + Length;
|
||||
Entry->EndAddress = BaseAddress + Length - 1;
|
||||
|
|
Loading…
Reference in New Issue