linux_dsm_epyc7002/drivers/firmware/efi
Arvind Sankar 21cb9b4143 efi/x86: Always relocate the kernel for EFI handover entry
Commit

  d5cdf4cfea ("efi/x86: Don't relocate the kernel unless necessary")

tries to avoid relocating the kernel in the EFI stub as far as possible.

However, when systemd-boot is used to boot a unified kernel image [1],
the image is constructed by embedding the bzImage as a .linux section in
a PE executable that contains a small stub loader from systemd that will
call the EFI stub handover entry, together with additional sections and
potentially an initrd. When this image is constructed, by for example
dracut, the initrd is placed after the bzImage without ensuring that at
least init_size bytes are available for the bzImage. If the kernel is
not relocated by the EFI stub, this could result in the compressed
kernel's startup code in head_{32,64}.S overwriting the initrd.

To prevent this, unconditionally relocate the kernel if the EFI stub was
entered via the handover entry point.

[1] https://systemd.io/BOOT_LOADER_SPECIFICATION/#type-2-efi-unified-kernel-images

Fixes: d5cdf4cfea ("efi/x86: Don't relocate the kernel unless necessary")
Reported-by: Sergey Shatunov <me@prok.pw>
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20200406180614.429454-2-nivedita@alum.mit.edu
Link: https://lore.kernel.org/r/20200409130434.6736-5-ardb@kernel.org
2020-04-14 08:32:13 +02:00
..
libstub efi/x86: Always relocate the kernel for EFI handover entry 2020-04-14 08:32:13 +02:00
test efi/efi_test: Lock down /dev/efi_test and require CAP_SYS_ADMIN 2019-10-31 09:40:21 +01:00
apple-properties.c efi/dev-path-parser: Add struct definition for vendor type device path nodes 2020-02-23 21:59:42 +01:00
arm-init.c Merge branch 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2020-03-30 16:13:08 -07:00
arm-runtime.c efi/arm: Drop unnecessary references to efi.systab 2020-02-23 21:59:42 +01:00
capsule-loader.c efi/capsule-loader: Drop superfluous assignment 2020-02-23 21:58:31 +01:00
capsule.c
cper-arm.c
cper-x86.c
cper.c efi/cper: Use scnprintf() for avoiding potential buffer overflow 2020-04-14 08:32:11 +02:00
dev-path-parser.c efi/dev-path-parser: Add struct definition for vendor type device path nodes 2020-02-23 21:59:42 +01:00
earlycon.c efi/earlycon: Fix write-combine mapping on x86 2019-12-25 10:46:06 +01:00
efi-bgrt.c efi/bgrt: Accept BGRT tables with a version of 0 2020-02-22 23:37:37 +01:00
efi-pstore.c efi: Fix a mistype in comments mentioning efivar_entry_iter_begin() 2020-03-08 10:00:07 +01:00
efi.c Stable shared branch between EFI and driver tree 2020-03-20 14:50:48 +01:00
efibc.c
efivars.c Merge branch 'efi/urgent' into efi/core, to pick up fixes 2020-03-08 09:57:58 +01:00
embedded-firmware.c platform/x86: touchscreen_dmi: Add EFI embedded firmware info support 2020-03-20 14:57:54 +01:00
esrt.c efi/esrt: Clean up efi_esrt_init 2020-02-23 21:57:59 +01:00
fake_mem.c efi: Fix handling of multiple efi_fake_mem= entries 2020-01-20 08:14:29 +01:00
fake_mem.h x86/efi: Add efi_fake_mem support for EFI_MEMORY_SP 2019-11-07 15:44:23 +01:00
fdtparams.c efi/arm: Rewrite FDT param discovery routines 2020-02-23 21:59:42 +01:00
Kconfig efi: Add embedded peripheral firmware support 2020-03-03 10:28:00 +01:00
Makefile efi/libstub: Avoid linking libstub/lib-ksyms.o into vmlinux 2020-03-08 10:00:06 +01:00
memattr.c efi: Move mem_attr_table out of struct efi 2020-02-23 21:59:42 +01:00
memmap.c efi: Fix handling of multiple efi_fake_mem= entries 2020-01-20 08:14:29 +01:00
rci2-table.c efi: Don't attempt to map RCI2 config table if it doesn't exist 2019-12-10 12:13:02 +01:00
reboot.c efi: Use EFI ResetSystem only when available 2020-02-23 21:59:42 +01:00
runtime-map.c
runtime-wrappers.c efi: Add 'runtime' pointer to struct efi 2020-02-23 21:59:42 +01:00
tpm.c efi/tpm: Return -EINVAL when determining tpm final events log size fails 2019-10-31 09:40:17 +01:00
vars.c efi: Fix a mistype in comments mentioning efivar_entry_iter_begin() 2020-03-08 10:00:07 +01:00
x86_fake_mem.c x86/efi: Add efi_fake_mem support for EFI_MEMORY_SP 2019-11-07 15:44:23 +01:00