x86: Fix return value of __setup handlers
[ Upstream commit12441ccdf5
] __setup() handlers should return 1 to obsolete_checksetup() in init/main.c to indicate that the boot option has been handled. A return of 0 causes the boot option/value to be listed as an Unknown kernel parameter and added to init's (limited) argument (no '=') or environment (with '=') strings. So return 1 from these x86 __setup handlers. Examples: Unknown kernel command line parameters "apicpmtimer BOOT_IMAGE=/boot/bzImage-517rc8 vdso=1 ring3mwait=disable", will be passed to user space. Run /sbin/init as init process with arguments: /sbin/init apicpmtimer with environment: HOME=/ TERM=linux BOOT_IMAGE=/boot/bzImage-517rc8 vdso=1 ring3mwait=disable Fixes:2aae950b21
("x86_64: Add vDSO for x86-64 with gettimeofday/clock_gettime/getcpu") Fixes:77b52b4c5c
("x86: add "debugpat" boot option") Fixes:e16fd002af
("x86/cpufeature: Enable RING3MWAIT for Knights Landing") Fixes:b8ce335906
("x86_64: convert to clock events") Reported-by: Igor Zhbanov <i.zhbanov@omprussia.ru> Signed-off-by: Randy Dunlap <rdunlap@infradead.org> Signed-off-by: Borislav Petkov <bp@suse.de> Link: https://lore.kernel.org/r/64644a2f-4a20-bab3-1e15-3b2cdd0defe3@omprussia.ru Link: https://lore.kernel.org/r/20220314012725.26661-1-rdunlap@infradead.org Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Родитель
20b946ef84
Коммит
737b14e490
|
@ -438,7 +438,7 @@ bool arch_syscall_is_vdso_sigreturn(struct pt_regs *regs)
|
|||
static __init int vdso_setup(char *s)
|
||||
{
|
||||
vdso64_enabled = simple_strtoul(s, NULL, 0);
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
__setup("vdso=", vdso_setup);
|
||||
|
||||
|
|
|
@ -170,7 +170,7 @@ static __init int setup_apicpmtimer(char *s)
|
|||
{
|
||||
apic_calibrate_pmtmr = 1;
|
||||
notsc_setup(NULL);
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
__setup("apicpmtimer", setup_apicpmtimer);
|
||||
#endif
|
||||
|
|
|
@ -91,7 +91,7 @@ static bool ring3mwait_disabled __read_mostly;
|
|||
static int __init ring3mwait_disable(char *__unused)
|
||||
{
|
||||
ring3mwait_disabled = true;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
__setup("ring3mwait=disable", ring3mwait_disable);
|
||||
|
||||
|
|
|
@ -101,7 +101,7 @@ int pat_debug_enable;
|
|||
static int __init pat_debug_setup(char *str)
|
||||
{
|
||||
pat_debug_enable = 1;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
__setup("debugpat", pat_debug_setup);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче