efi/x86: Avoid RWX mappings for all of DRAM
authorArd Biesheuvel <ardb@kernel.org>
Mon, 13 Jan 2020 17:22:38 +0000 (18:22 +0100)
committerIngo Molnar <mingo@kernel.org>
Mon, 20 Jan 2020 07:13:01 +0000 (08:13 +0100)
commit97bb9cdc32108036170d9d0d208257168f80d9e9
treef5601b55d9c54358e5baf3d0b87f64b96b8cb893
parentd9e3d2c4f103200d87f2c243a84c1fd3b3bfea8c
efi/x86: Avoid RWX mappings for all of DRAM

The EFI code creates RWX mappings for all memory regions that are
occupied after the stub completes, and in the mixed mode case, it
even creates RWX mappings for all of the remaining DRAM as well.

Let's try to avoid this, by setting the NX bit for all memory
regions except the ones that are marked as EFI runtime services
code [which means text+rodata+data in practice, so we cannot mark
them read-only right away]. For cases of buggy firmware where boot
services code is called during SetVirtualAddressMap(), map those
regions with exec permissions as well - they will be unmapped in
efi_free_boot_services().

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20200113172245.27925-7-ardb@kernel.org
arch/x86/platform/efi/efi_64.c