Patch "efi: Check for NULL efi kernel parameters" has been added to the 4.1-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
efi: Check for NULL efi kernel parameters
to the 4.1-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
efi-check-for-null-efi-kernel-parameters.patch
and it can be found in the queue-4.1 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
9115c7589b11349a1c3099758b4bded579ff69e0Mon Sep 17 00:00:00 2001
From: Ricardo Neri <[email protected]>
Date: Wed, 15 Jul 2015 19:36:03 -0700
Subject: efi: Check for NULL efi kernel parameters
From: Ricardo Neri <[email protected]>
commit 9115c7589b11349a1c3099758b4bded579ff69e0 upstream.
Even though it is documented how to specifiy efi parameters, it is possible to cause a kernel panic due to a dereference of a NULL pointer when parsing such parameters if "efi" alone is given:
PANIC: early exception 0e rip 10:ffffffff812fb361 error 0 cr2 0
[ 0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 4.2.0-rc1+ #450 [ 0.000000] ffffffff81fe20a9 ffffffff81e03d50 ffffffff8184bb0f 00000000000003f8 [ 0.000000] 0000000000000000 ffffffff81e03e08 ffffffff81f371a1 64656c62616e6520 [ 0.000000] 0000000000000069 000000000000005f 0000000000000000 0000000000000000 [ 0.000000] Call Trace: [ 0.000000] [<ffffffff8184bb0f>] dump_stack+0x45/0x57 [ 0.000000] [<ffffffff81f371a1>] early_idt_handler_common+0x81/0xae [ 0.000000] [<ffffffff812fb361>] ? parse_option_str+0x11/0x90 [ 0.000000] [<ffffffff81f4dd69>] arch_parse_efi_cmdline+0x15/0x42 [ 0.000000] [<ffffffff81f376e1>] do_early_param+0x50/0x8a [ 0.000000] [<ffffffff8106b1b3>] parse_args+0x1e3/0x400 [ 0.000000] [<ffffffff81f37a43>] parse_early_options+0x24/0x28 [ 0.000000] [<ffffffff81f37691>] ? loglevel+0x31/0x31 [ 0.000000] [<ffffffff81f37a78>] parse_early_param+0x31/0x3d [ 0.000000] [<ffffffff81f3ae98>] setup_arch+0x2de/0xc08 [ 0.000000] [<ffffffff8109629a>] ? vprintk_default+0x1a/0x20 [ 0.000000] [<ffffffff81f37b20>] start_kernel+0x90/0x423 [ 0.000000] [<ffffffff81f37495>] x86_64_start_reservations+0x2a/0x2c [ 0.000000] [<ffffffff81f37582>] x86_64_start_kernel+0xeb/0xef [ 0.000000] RIP 0xffffffff81ba2efc
This panic is not reproducible with "efi=" as this will result in a non-NULL zero-length string.
Thus, verify that the pointer to the parameter string is not NULL. This is consistent with other parameter-parsing functions which check for NULL pointers.
--- arch/x86/platform/efi/efi.c | 5 +++++ drivers/firmware/efi/efi.c | 5 +++++ 2 files changed, 10 insertions(+)
arch/x86/platform/efi/efi.c +5 -0
@@ -946,6 +946,11 @@ u64 efi_mem_attributes(unsigned long phystatic int __init arch_parse_efi_cmdline (char *str) { +if (!str) { +pr_warn ("need at least one option\n" ); +return -EINVAL ; + } +if (parse_option_str (str,"old_map" ))set_bit (EFI_OLD_MEMMAP , &efi.flags);if (parse_option_str (str,"debug" ))
drivers/firmware/efi/efi.c +5 -0
@@ -57,6 +57,11 @@ bool efi_runtime_disabled(void)static int __init parse_efi_cmdline (char *str) { +if (!str) { +pr_warn ("need at least one option\n" ); +return -EINVAL ; + } +if (parse_option_str (str,"noruntime" )) disable_runtime = true;
Patches currently in stable-queue which might be from [email protected] are
queue-4.1/efi-check-for-null-efi-kernel-parameters.patch