efi: fix return value of __setup handlers
[ 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:58c5475aba
("x86/efi: Retrieve and assign Apple device properties") Fixes:475fb4e8b2
("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>
This commit is contained in:
parent
7869543b15
commit
b6e96480f6
@ -34,7 +34,7 @@ static bool dump_properties __initdata;
|
|||||||
static int __init dump_properties_enable(char *arg)
|
static int __init dump_properties_enable(char *arg)
|
||||||
{
|
{
|
||||||
dump_properties = true;
|
dump_properties = true;
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
__setup("dump_apple_properties", dump_properties_enable);
|
__setup("dump_apple_properties", dump_properties_enable);
|
||||||
|
@ -245,7 +245,7 @@ static int __init efivar_ssdt_setup(char *str)
|
|||||||
memcpy(efivar_ssdt, str, strlen(str));
|
memcpy(efivar_ssdt, str, strlen(str));
|
||||||
else
|
else
|
||||||
pr_warn("efivar_ssdt: name too long: %s\n", str);
|
pr_warn("efivar_ssdt: name too long: %s\n", str);
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
__setup("efivar_ssdt=", efivar_ssdt_setup);
|
__setup("efivar_ssdt=", efivar_ssdt_setup);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user