Re: [PATCH v2] efi/x86: Call efi_parse_options() from efi_main()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12 September 2018 at 20:32, Hans de Goede <hdegoede@xxxxxxxxxx> wrote:
> 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@xxxxxxxxxx>
> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>

Queued in efi/next - thanks.

> ---
> Changes in v2:
> -Fix a compiler warning on 32 bit builds about casting a non pointer
>  sized integer to a pointer
> ---
>  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.
> --
> 2.19.0.rc0
>



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux