OSDN Git Service

efi/arm: preserve early mapping of UEFI memory map longer for BGRT
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Mon, 23 Jul 2018 01:57:30 +0000 (10:57 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 26 Sep 2018 06:39:27 +0000 (08:39 +0200)
commit78fcf13d0235065a0c42de214d1a4b3d7efd59ba
tree3f06456ef177f973a48867c6127760379fb1cc65
parente505be5d53e0ae6320fbd0f6f4357773afa30977
efi/arm: preserve early mapping of UEFI memory map longer for BGRT

[ Upstream commit 3ea86495aef2f6de26b7cb1599ba350dd6a0c521 ]

The BGRT code validates the contents of the table against the UEFI
memory map, and so it expects it to be mapped when the code runs.

On ARM, this is currently not the case, since we tear down the early
mapping after efi_init() completes, and only create the permanent
mapping in arm_enable_runtime_services(), which executes as an early
initcall, but still leaves a window where the UEFI memory map is not
mapped.

So move the call to efi_memmap_unmap() from efi_init() to
arm_enable_runtime_services().

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
[will: fold in EFI_MEMMAP attribute check from Ard]
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/firmware/efi/arm-init.c
drivers/firmware/efi/arm-runtime.c