diff options
author | Ard Biesheuvel <ard.biesheuvel@linaro.org> | 2017-04-04 18:02:45 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2017-04-05 12:27:27 +0200 |
commit | 4c3f14bb87b683a2e5bbc6d6660b41893ecacfd0 (patch) | |
tree | f1b0b5356f26419cc5e123eda5ba5314bcad6f52 /drivers/firmware/efi/libstub | |
parent | efi/arm32-stub: Allow boot-time allocations in the vmlinux region (diff) | |
download | linux-4c3f14bb87b683a2e5bbc6d6660b41893ecacfd0.tar.xz linux-4c3f14bb87b683a2e5bbc6d6660b41893ecacfd0.zip |
efi/libstub: Fix harmless command line parsing bug
When we parse the 'efi=' command line parameter in the stub, we
fail to take spaces into account. Currently, the only way this
could result in unexpected behavior is when the string 'nochunk'
appears as a separate command line argument after 'efi=xxx,yyy,zzz ',
so this is harmless in practice. But let's fix it nonetheless.
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Matt Fleming <matt@codeblueprint.co.uk>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-efi@vger.kernel.org
Link: http://lkml.kernel.org/r/20170404160245.27812-12-ard.biesheuvel@linaro.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/firmware/efi/libstub')
-rw-r--r-- | drivers/firmware/efi/libstub/efi-stub-helper.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/firmware/efi/libstub/efi-stub-helper.c b/drivers/firmware/efi/libstub/efi-stub-helper.c index 919822b7773d..3290fae0b38f 100644 --- a/drivers/firmware/efi/libstub/efi-stub-helper.c +++ b/drivers/firmware/efi/libstub/efi-stub-helper.c @@ -436,14 +436,14 @@ efi_status_t efi_parse_options(char *cmdline) * Remember, because efi= is also used by the kernel we need to * skip over arguments we don't understand. */ - while (*str) { + while (*str && *str != ' ') { if (!strncmp(str, "nochunk", 7)) { str += strlen("nochunk"); __chunk_size = -1UL; } /* Group words together, delimited by "," */ - while (*str && *str != ',') + while (*str && *str != ' ' && *str != ',') str++; if (*str == ',') |