From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mout01.posteo.de (mout01.posteo.de [185.67.36.65]) by mx.groups.io with SMTP id smtpd.web08.2459.1629575786238633371 for ; Sat, 21 Aug 2021 12:56:27 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@posteo.de header.s=2017 header.b=PwYUSSQg; spf=pass (domain: posteo.de, ip: 185.67.36.65, mailfrom: mhaeuser@posteo.de) Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id 02DD224002C for ; Sat, 21 Aug 2021 21:56:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.de; s=2017; t=1629575784; bh=emQ4JPLZ43Au3zqWIwKWThyHuCkFgoxITt3xCjKhedE=; h=From:To:Cc:Subject:Date:From; b=PwYUSSQgXsk1+LdVQlNpLa4XUVlumyH4QfznbBCyQjvQKVpIL3wk8HwHN5RA+TCKF MIGDR2hiWGCRMGoHuoUnXomuEPEUH8ZE4z2m0eCbVUk+uxLt/da0AcE0QBZi7rrbf9 VbMTEFqjnp79sYN99UwIAS54tg/EYMALzhFMb75BSok4OFQNStwznoReSnQwHz5Vsp ZFnsKjp15vdelTb1Hb736x1Wwx5YjHevxDuhXbF6yaErue+YecRuzfIVjHPXXVY5h9 rVpPV41hvBqUmoDzZQSY3johJyOUTjKpyH9X3VEENHi2Fpj2lU2ZPk+Z68z17LlQlU 4xiWn4FrxTQqA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4GsTlq3rmNz9rxW; Sat, 21 Aug 2021 21:56:23 +0200 (CEST) From: =?UTF-8?B?TWFydmluIEjDpHVzZXI=?= To: devel@edk2.groups.io Cc: Jian J Wang , Hao A Wu , Dandan Bi , Liming Gao , Vitaly Cheptsov Subject: [PATCH 2/5] MdeModulePkg/DxeCore: Align fixed-address error behaviour Date: Sat, 21 Aug 2021 19:55:49 +0000 Message-Id: In-Reply-To: <6baa44c6ee3ead5e4ffdefd5fdd3961323c323d0.1629575593.git.mhaeuser@posteo.de> References: <6baa44c6ee3ead5e4ffdefd5fdd3961323c323d0.1629575593.git.mhaeuser@posteo.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Update the control flow to take the same actions for failed fixed-address loading as if the feature was disabled. This allows Images to still be loaded to their preferred address in the case of a mismatch between fixed-address and preferred address, and also ensures correct handling of stripped relocations. Cc: Jian J Wang Cc: Hao A Wu Cc: Dandan Bi Cc: Liming Gao Cc: Vitaly Cheptsov Signed-off-by: Marvin H=C3=A4user --- MdeModulePkg/Core/Dxe/Image/Image.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/MdeModulePkg/Core/Dxe/Image/Image.c b/MdeModulePkg/Core/Dxe/Im= age/Image.c index 641a5715b112..0a1def0572bc 100644 --- a/MdeModulePkg/Core/Dxe/Image/Image.c +++ b/MdeModulePkg/Core/Dxe/Image/Image.c @@ -565,6 +565,7 @@ CoreLoadPeImage ( EFI_STATUS Status;=0D BOOLEAN DstBufAlocated;=0D UINTN Size;=0D + PHYSICAL_ADDRESS PreferredAddress;=0D =0D ZeroMem (&Image->ImageContext, sizeof (Image->ImageContext));=0D =0D @@ -642,6 +643,8 @@ CoreLoadPeImage ( // a specified address.=0D //=0D if (PcdGet64(PcdLoadModuleAtFixAddressEnable) !=3D 0 ) {=0D + PreferredAddress =3D Image->ImageContext.ImageAddress;=0D +=0D Status =3D GetPeCoffImageFixLoadingAssignedAddress (&(Image->ImageCo= ntext));=0D =0D if (EFI_ERROR (Status)) {=0D @@ -649,15 +652,10 @@ CoreLoadPeImage ( // If the code memory is not ready, invoke CoreAllocatePage with= AllocateAnyPages to load the driver.=0D //=0D DEBUG ((EFI_D_INFO|EFI_D_LOAD, "LOADING MODULE FIXED ERROR: Load= ing module at fixed address failed since specified memory is not available.= \n"));=0D -=0D - Status =3D CoreAllocatePages (=0D - AllocateAnyPages,=0D - (EFI_MEMORY_TYPE) (Image->ImageContext.ImageCodeMemor= yType),=0D - Image->NumberOfPages,=0D - &Image->ImageContext.ImageAddress=0D - );=0D + Image->ImageContext.ImageAddress =3D PreferredAddress;=0D }=0D - } else {=0D + }=0D + if (EFI_ERROR (Status)) {=0D if (Image->ImageContext.ImageAddress >=3D 0x100000 || Image->ImageCo= ntext.RelocationsStripped) {=0D Status =3D CoreAllocatePages (=0D AllocateAddress,=0D --=20 2.31.1