diff options
authorKairui Song <>2019-01-18 19:13:08 +0800
committerBorislav Petkov <>2019-02-01 18:18:54 +0100
commit2aa958c99c7fd3162b089a1a56a34a0cdb778de1 (patch)
parent912139cfbfa6a2bc1da052314d2c29338dae1f6a (diff)
x86/kexec: Don't setup EFI info if EFI runtime is not enabled
Kexec-ing a kernel with "efi=noruntime" on the first kernel's command line causes the following null pointer dereference: BUG: unable to handle kernel NULL pointer dereference at 0000000000000000 #PF error: [normal kernel read fault] Call Trace: efi_runtime_map_copy+0x28/0x30 bzImage64_load+0x688/0x872 arch_kexec_kernel_image_load+0x6d/0x70 kimage_file_alloc_init+0x13e/0x220 __x64_sys_kexec_file_load+0x144/0x290 do_syscall_64+0x55/0x1a0 entry_SYSCALL_64_after_hwframe+0x44/0xa9 Just skip the EFI info setup if EFI runtime services are not enabled. [ bp: Massage commit message. ] Suggested-by: Dave Young <> Signed-off-by: Kairui Song <> Signed-off-by: Borislav Petkov <> Acked-by: Dave Young <> Cc: AKASHI Takahiro <> Cc: Andrew Morton <> Cc: Ard Biesheuvel <> Cc: Cc: David Howells <> Cc: Cc: Cc: "H. Peter Anvin" <> Cc: Ingo Molnar <> Cc: Cc: Cc: Cc: Philipp Rudo <> Cc: Cc: Cc: Thomas Gleixner <> Cc: x86-ml <> Cc: Yannik Sembritzki <> Link:
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86/kernel/kexec-bzimage64.c b/arch/x86/kernel/kexec-bzimage64.c
index 0d5efa34f359..53917a3ebf94 100644
--- a/arch/x86/kernel/kexec-bzimage64.c
+++ b/arch/x86/kernel/kexec-bzimage64.c
@@ -167,6 +167,9 @@ setup_efi_state(struct boot_params *params, unsigned long params_load_addr,
struct efi_info *current_ei = &boot_params.efi_info;
struct efi_info *ei = &params->efi_info;
+ if (!efi_enabled(EFI_RUNTIME_SERVICES))
+ return 0;
if (!current_ei->efi_memmap_size)
return 0;