mirror of
https://github.com/acidanthera/audk.git
synced 2025-09-25 02:37:39 +02:00
MdeModulePkg: Fix UEFI runtime driver loading after EndOfDxe
Memory Attributes Table needs to be updated to contain executable permissions for UEFI runtime drivers loaded after EndOfDxe. Fixes a regression introduced by bb248a9. Signed-off-by: Vitaly Cheptsov <vit9696@protonmail.com>
This commit is contained in:
parent
ece0d16e56
commit
21e77e0659
@ -89,7 +89,6 @@ STATIC IMAGE_PROPERTIES_PRIVATE_DATA mImagePropertiesPrivateData = {
|
|||||||
STATIC EFI_LOCK mMemoryAttributesTableLock = EFI_INITIALIZE_LOCK_VARIABLE (TPL_NOTIFY);
|
STATIC EFI_LOCK mMemoryAttributesTableLock = EFI_INITIALIZE_LOCK_VARIABLE (TPL_NOTIFY);
|
||||||
|
|
||||||
BOOLEAN mMemoryAttributesTableEnable = TRUE;
|
BOOLEAN mMemoryAttributesTableEnable = TRUE;
|
||||||
BOOLEAN mMemoryAttributesTableEndOfDxe = FALSE;
|
|
||||||
EFI_MEMORY_ATTRIBUTES_TABLE *mMemoryAttributesTable = NULL;
|
EFI_MEMORY_ATTRIBUTES_TABLE *mMemoryAttributesTable = NULL;
|
||||||
BOOLEAN mMemoryAttributesTableReadyToBoot = FALSE;
|
BOOLEAN mMemoryAttributesTableReadyToBoot = FALSE;
|
||||||
|
|
||||||
@ -278,7 +277,6 @@ InstallMemoryAttributesTableOnEndOfDxe (
|
|||||||
IN VOID *Context
|
IN VOID *Context
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
mMemoryAttributesTableEndOfDxe = TRUE;
|
|
||||||
InstallMemoryAttributesTable ();
|
InstallMemoryAttributesTable ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -648,12 +646,6 @@ InsertImageRecord (
|
|||||||
RuntimeImage = Image->RuntimeData;
|
RuntimeImage = Image->RuntimeData;
|
||||||
|
|
||||||
DEBUG ((DEBUG_VERBOSE, "InsertImageRecord - 0x%x\n", RuntimeImage));
|
DEBUG ((DEBUG_VERBOSE, "InsertImageRecord - 0x%x\n", RuntimeImage));
|
||||||
|
|
||||||
if (mMemoryAttributesTableEndOfDxe) {
|
|
||||||
DEBUG ((DEBUG_INFO, "Do not insert runtime image record after EndOfDxe\n"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
DEBUG ((DEBUG_VERBOSE, "ImageRecordCount - 0x%x\n", mImagePropertiesPrivateData.ImageRecordCount));
|
DEBUG ((DEBUG_VERBOSE, "ImageRecordCount - 0x%x\n", mImagePropertiesPrivateData.ImageRecordCount));
|
||||||
|
|
||||||
PdbStatus = UefiImageGetSymbolsPath (ImageContext, &PdbPointer, &PdbSize);
|
PdbStatus = UefiImageGetSymbolsPath (ImageContext, &PdbPointer, &PdbSize);
|
||||||
@ -750,11 +742,6 @@ RemoveImageRecord (
|
|||||||
DEBUG ((DEBUG_VERBOSE, "RemoveImageRecord - 0x%x\n", RuntimeImage));
|
DEBUG ((DEBUG_VERBOSE, "RemoveImageRecord - 0x%x\n", RuntimeImage));
|
||||||
DEBUG ((DEBUG_VERBOSE, "RemoveImageRecord - 0x%016lx - 0x%016lx\n", (EFI_PHYSICAL_ADDRESS)(UINTN)RuntimeImage->ImageBase, RuntimeImage->ImageSize));
|
DEBUG ((DEBUG_VERBOSE, "RemoveImageRecord - 0x%016lx - 0x%016lx\n", (EFI_PHYSICAL_ADDRESS)(UINTN)RuntimeImage->ImageBase, RuntimeImage->ImageSize));
|
||||||
|
|
||||||
if (mMemoryAttributesTableEndOfDxe) {
|
|
||||||
DEBUG ((DEBUG_INFO, "Do not remove runtime image record after EndOfDxe\n"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ImageRecord = FindImageRecord ((EFI_PHYSICAL_ADDRESS)(UINTN)RuntimeImage->ImageBase);
|
ImageRecord = FindImageRecord ((EFI_PHYSICAL_ADDRESS)(UINTN)RuntimeImage->ImageBase);
|
||||||
if (ImageRecord == NULL) {
|
if (ImageRecord == NULL) {
|
||||||
DEBUG ((DEBUG_ERROR, "!!!!!!!! ImageRecord not found !!!!!!!!\n"));
|
DEBUG ((DEBUG_ERROR, "!!!!!!!! ImageRecord not found !!!!!!!!\n"));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user