diff options
Diffstat (limited to 'efi-x86-call-parse-options-from-efi-main.patch')
-rw-r--r-- | efi-x86-call-parse-options-from-efi-main.patch | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/efi-x86-call-parse-options-from-efi-main.patch b/efi-x86-call-parse-options-from-efi-main.patch new file mode 100644 index 000000000..a1a3a34d4 --- /dev/null +++ b/efi-x86-call-parse-options-from-efi-main.patch @@ -0,0 +1,58 @@ +From ecb77f61f10b36476133e31cdc001892b5463b90 Mon Sep 17 00:00:00 2001 +From: Hans de Goede <hdegoede@redhat.com> +Date: Wed, 12 Sep 2018 20:32:05 +0200 +Subject: efi/x86: Call efi_parse_options() from efi_main() + +Before this commit we were only calling efi_parse_options() from +make_boot_params(), but make_boot_params() only gets called if the +kernel gets booted directly as an EFI executable. So when booted through +e.g. grub we ended up not parsing the commandline in the boot code. + +This makes the drivers/firmware/efi/libstub code ignore the "quiet" +commandline argument resulting in the following message being printed: +"EFI stub: UEFI Secure Boot is enabled." + +Despite the quiet request. This commits adds an extra call to +efi_parse_options() to efi_main() to make sure that the options are +always processed. This fixes quiet not working. + +This also fixes the libstub code ignoring nokaslr and efi=nochunk. + +Reported-by: Peter Robinson <pbrobinson@redhat.com> +Signed-off-by: Hans de Goede <hdegoede@redhat.com> +Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> +--- + arch/x86/boot/compressed/eboot.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c +index 1458b1700fc7..8b4c5e001157 100644 +--- a/arch/x86/boot/compressed/eboot.c ++++ b/arch/x86/boot/compressed/eboot.c +@@ -738,6 +738,7 @@ efi_main(struct efi_config *c, struct boot_params *boot_params) + struct desc_struct *desc; + void *handle; + efi_system_table_t *_table; ++ unsigned long cmdline_paddr; + + efi_early = c; + +@@ -755,6 +756,15 @@ efi_main(struct efi_config *c, struct boot_params *boot_params) + else + setup_boot_services32(efi_early); + ++ /* ++ * make_boot_params() may have been called before efi_main(), in which ++ * case this is the second time we parse the cmdline. This is ok, ++ * parsing the cmdline multiple times does not have side-effects. ++ */ ++ cmdline_paddr = ((u64)hdr->cmd_line_ptr | ++ ((u64)boot_params->ext_cmd_line_ptr << 32)); ++ efi_parse_options((char *)cmdline_paddr); ++ + /* + * If the boot loader gave us a value for secure_boot then we use that, + * otherwise we ask the BIOS. +-- +cgit 1.2-0.3.lf.el7 + |