| From 559b8c757cefcc2d22f956fe146b5c7e4e75fe18 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 28 Feb 2022 20:18:51 -0800 |
| Subject: efi: fix return value of __setup handlers |
| |
| From: Randy Dunlap <rdunlap@infradead.org> |
| |
| [ Upstream commit 9feaf8b387ee0ece9c1d7add308776b502a35d0c ] |
| |
| When "dump_apple_properties" is used on the kernel boot command line, |
| it causes an Unknown parameter message and the string is added to init's |
| argument strings: |
| |
| Unknown kernel command line parameters "dump_apple_properties |
| BOOT_IMAGE=/boot/bzImage-517rc6 efivar_ssdt=newcpu_ssdt", will be |
| passed to user space. |
| |
| Run /sbin/init as init process |
| with arguments: |
| /sbin/init |
| dump_apple_properties |
| with environment: |
| HOME=/ |
| TERM=linux |
| BOOT_IMAGE=/boot/bzImage-517rc6 |
| efivar_ssdt=newcpu_ssdt |
| |
| Similarly when "efivar_ssdt=somestring" is used, it is added to the |
| Unknown parameter message and to init's environment strings, polluting |
| them (see examples above). |
| |
| Change the return value of the __setup functions to 1 to indicate |
| that the __setup options have been handled. |
| |
| Fixes: 58c5475aba67 ("x86/efi: Retrieve and assign Apple device properties") |
| Fixes: 475fb4e8b2f4 ("efi / ACPI: load SSTDs from EFI variables") |
| Signed-off-by: Randy Dunlap <rdunlap@infradead.org> |
| Reported-by: Igor Zhbanov <i.zhbanov@omprussia.ru> |
| Link: lore.kernel.org/r/64644a2f-4a20-bab3-1e15-3b2cdd0defe3@omprussia.ru |
| Cc: Ard Biesheuvel <ardb@kernel.org> |
| Cc: linux-efi@vger.kernel.org |
| Cc: Lukas Wunner <lukas@wunner.de> |
| Cc: Octavian Purdila <octavian.purdila@intel.com> |
| Cc: "Rafael J. Wysocki" <rafael@kernel.org> |
| Cc: Matt Fleming <matt@codeblueprint.co.uk> |
| Link: https://lore.kernel.org/r/20220301041851.12459-1-rdunlap@infradead.org |
| Signed-off-by: Ard Biesheuvel <ardb@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/firmware/efi/apple-properties.c | 2 +- |
| drivers/firmware/efi/efi.c | 2 +- |
| 2 files changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/firmware/efi/apple-properties.c b/drivers/firmware/efi/apple-properties.c |
| index 0e206c9e0d7a..7ad2d85d7270 100644 |
| --- a/drivers/firmware/efi/apple-properties.c |
| +++ b/drivers/firmware/efi/apple-properties.c |
| @@ -23,7 +23,7 @@ static bool dump_properties __initdata; |
| static int __init dump_properties_enable(char *arg) |
| { |
| dump_properties = true; |
| - return 0; |
| + return 1; |
| } |
| |
| __setup("dump_apple_properties", dump_properties_enable); |
| diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c |
| index 415d7b3a59f8..8fd74a7501d4 100644 |
| --- a/drivers/firmware/efi/efi.c |
| +++ b/drivers/firmware/efi/efi.c |
| @@ -231,7 +231,7 @@ static int __init efivar_ssdt_setup(char *str) |
| memcpy(efivar_ssdt, str, strlen(str)); |
| else |
| pr_warn("efivar_ssdt: name too long: %s\n", str); |
| - return 0; |
| + return 1; |
| } |
| __setup("efivar_ssdt=", efivar_ssdt_setup); |
| |
| -- |
| 2.34.1 |
| |