[PATCH] Don't pass boot parameters to argv_init[]
The boot cmdline is parsed in parse_early_param() and parse_args(,unknown_bootoption). And __setup() is used in obsolete_checksetup(). start_kernel() -> parse_args() -> unknown_bootoption() -> obsolete_checksetup() If __setup()'s callback (->setup_func()) returns 1 in obsolete_checksetup(), obsolete_checksetup() thinks a parameter was handled. If ->setup_func() returns 0, obsolete_checksetup() tries other ->setup_func(). If all ->setup_func() that matched a parameter returns 0, a parameter is seted to argv_init[]. Then, when runing /sbin/init or init=app, argv_init[] is passed to the app. If the app doesn't ignore those arguments, it will warning and exit. This patch fixes a wrong usage of it, however fixes obvious one only. Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Родитель
68eef3b479
Коммит
9b41046cd0
|
@ -435,7 +435,7 @@ marvel_specify_io7(char *str)
|
|||
str = pchar;
|
||||
} while(*str);
|
||||
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
__setup("io7=", marvel_specify_io7);
|
||||
|
||||
|
|
|
@ -752,7 +752,7 @@ static int __init apic_set_verbosity(char *str)
|
|||
printk(KERN_WARNING "APIC Verbosity level %s not recognised"
|
||||
" use apic=verbose or apic=debug\n", str);
|
||||
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("apic=", apic_set_verbosity);
|
||||
|
|
|
@ -64,13 +64,13 @@ void mcheck_init(struct cpuinfo_x86 *c)
|
|||
static int __init mcheck_disable(char *str)
|
||||
{
|
||||
mce_disabled = 1;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int __init mcheck_enable(char *str)
|
||||
{
|
||||
mce_disabled = -1;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("nomce", mcheck_disable);
|
||||
|
|
|
@ -644,7 +644,7 @@ failed:
|
|||
int __init irqbalance_disable(char *str)
|
||||
{
|
||||
irqbalance_disabled = 1;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("noirqbalance", irqbalance_disable);
|
||||
|
|
|
@ -1193,6 +1193,6 @@ void __init trap_init(void)
|
|||
static int __init kstack_setup(char *s)
|
||||
{
|
||||
kstack_depth_to_print = simple_strtoul(s, NULL, 0);
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
__setup("kstack=", kstack_setup);
|
||||
|
|
|
@ -61,7 +61,7 @@ static int __init parse_elfcorehdr(char *p)
|
|||
if (p)
|
||||
elfcorehdr_addr = memparse(p, &p);
|
||||
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
__setup("elfcorehdr=", parse_elfcorehdr);
|
||||
#endif
|
||||
|
@ -71,7 +71,7 @@ static int __init parse_savemaxmem(char *p)
|
|||
if (p)
|
||||
saved_max_pfn = (memparse(p, &p) >> PAGE_SHIFT) - 1;
|
||||
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
__setup("savemaxmem=", parse_savemaxmem);
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ static int x##_disabled __initdata = 0; \
|
|||
static int __init x##_setup(char *opts) \
|
||||
{ \
|
||||
x##_disabled = 1; \
|
||||
return 0; \
|
||||
return 1; \
|
||||
} \
|
||||
__setup("no" __stringify(x), x##_setup);
|
||||
|
||||
|
|
|
@ -615,7 +615,7 @@ static int __init apic_set_verbosity(char *str)
|
|||
printk(KERN_WARNING "APIC Verbosity level %s not recognised"
|
||||
" use apic=verbose or apic=debug", str);
|
||||
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("apic=", apic_set_verbosity);
|
||||
|
@ -1137,35 +1137,35 @@ int __init APIC_init_uniprocessor (void)
|
|||
static __init int setup_disableapic(char *str)
|
||||
{
|
||||
disable_apic = 1;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static __init int setup_nolapic(char *str)
|
||||
{
|
||||
disable_apic = 1;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static __init int setup_noapictimer(char *str)
|
||||
{
|
||||
if (str[0] != ' ' && str[0] != 0)
|
||||
return -1;
|
||||
return 0;
|
||||
disable_apic_timer = 1;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static __init int setup_apicmaintimer(char *str)
|
||||
{
|
||||
apic_runs_main_timer = 1;
|
||||
nohpet = 1;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
__setup("apicmaintimer", setup_apicmaintimer);
|
||||
|
||||
static __init int setup_noapicmaintimer(char *str)
|
||||
{
|
||||
apic_runs_main_timer = -1;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
__setup("noapicmaintimer", setup_noapicmaintimer);
|
||||
|
||||
|
|
|
@ -221,7 +221,7 @@ int __init setup_early_printk(char *opt)
|
|||
char buf[256];
|
||||
|
||||
if (early_console_initialized)
|
||||
return -1;
|
||||
return 1;
|
||||
|
||||
strlcpy(buf,opt,sizeof(buf));
|
||||
space = strchr(buf, ' ');
|
||||
|
|
|
@ -501,7 +501,7 @@ static struct miscdevice mce_log_device = {
|
|||
static int __init mcheck_disable(char *str)
|
||||
{
|
||||
mce_dont_init = 1;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* mce=off disables machine check. Note you can reenable it later
|
||||
|
@ -521,7 +521,7 @@ static int __init mcheck_enable(char *str)
|
|||
get_option(&str, &tolerant);
|
||||
else
|
||||
printk("mce= argument %s ignored. Please use /sys", str);
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("nomce", mcheck_disable);
|
||||
|
|
|
@ -121,7 +121,7 @@ unsigned int do_gettimeoffset_pm(void)
|
|||
static int __init nopmtimer_setup(char *s)
|
||||
{
|
||||
pmtmr_ioport = 0;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("nopmtimer", nopmtimer_setup);
|
||||
|
|
|
@ -540,7 +540,7 @@ void __init alternative_instructions(void)
|
|||
static int __init noreplacement_setup(char *s)
|
||||
{
|
||||
no_replacement = 1;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("noreplacement", noreplacement_setup);
|
||||
|
|
|
@ -55,7 +55,7 @@ int __init nonx_setup(char *str)
|
|||
do_not_nx = 1;
|
||||
__supported_pte_mask &= ~_PAGE_NX;
|
||||
}
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
__setup("noexec=", nonx_setup); /* parsed early actually */
|
||||
|
||||
|
@ -74,7 +74,7 @@ static int __init nonx32_setup(char *str)
|
|||
force_personality32 &= ~READ_IMPLIES_EXEC;
|
||||
else if (!strcmp(str, "off"))
|
||||
force_personality32 |= READ_IMPLIES_EXEC;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
__setup("noexec32=", nonx32_setup);
|
||||
|
||||
|
|
|
@ -353,7 +353,7 @@ static void __cpuinit tsc_sync_wait(void)
|
|||
static __init int notscsync_setup(char *s)
|
||||
{
|
||||
notscsync = 1;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
__setup("notscsync", notscsync_setup);
|
||||
|
||||
|
|
|
@ -1306,7 +1306,7 @@ irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
|
|||
static int __init nohpet_setup(char *s)
|
||||
{
|
||||
nohpet = 1;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("nohpet", nohpet_setup);
|
||||
|
@ -1314,7 +1314,7 @@ __setup("nohpet", nohpet_setup);
|
|||
int __init notsc_setup(char *s)
|
||||
{
|
||||
notsc = 1;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("notsc", notsc_setup);
|
||||
|
|
|
@ -973,14 +973,14 @@ void __init trap_init(void)
|
|||
static int __init oops_dummy(char *s)
|
||||
{
|
||||
panic_on_oops = 1;
|
||||
return -1;
|
||||
return 1;
|
||||
}
|
||||
__setup("oops=", oops_dummy);
|
||||
|
||||
static int __init kstack_setup(char *s)
|
||||
{
|
||||
kstack_depth_to_print = simple_strtoul(s,NULL,0);
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
__setup("kstack=", kstack_setup);
|
||||
|
||||
|
|
|
@ -623,6 +623,6 @@ void vmalloc_sync_all(void)
|
|||
static int __init enable_pagefaulttrace(char *str)
|
||||
{
|
||||
page_fault_trace = 1;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
__setup("pagefaulttrace", enable_pagefaulttrace);
|
||||
|
|
|
@ -145,7 +145,7 @@ static int __init elevator_setup(char *str)
|
|||
strcpy(chosen_elevator, "anticipatory");
|
||||
else
|
||||
strncpy(chosen_elevator, str, sizeof(chosen_elevator) - 1);
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("elevator=", elevator_setup);
|
||||
|
|
|
@ -1572,7 +1572,7 @@ static void __exit acpi_ec_exit(void)
|
|||
static int __init acpi_fake_ecdt_setup(char *str)
|
||||
{
|
||||
acpi_fake_ecdt_enabled = 1;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("acpi_fake_ecdt", acpi_fake_ecdt_setup);
|
||||
|
@ -1591,7 +1591,7 @@ static int __init acpi_ec_set_intr_mode(char *str)
|
|||
acpi_ec_driver.ops.add = acpi_ec_poll_add;
|
||||
}
|
||||
printk(KERN_INFO PREFIX "EC %s mode.\n", intr ? "interrupt" : "polling");
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("ec_intr=", acpi_ec_set_intr_mode);
|
||||
|
|
|
@ -1850,6 +1850,7 @@ static int __init amiga_floppy_setup (char *str)
|
|||
return 0;
|
||||
printk (KERN_INFO "amiflop: Setting default df0 to %x\n", n);
|
||||
fd_def_df0 = n;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("floppy=", amiga_floppy_setup);
|
||||
|
|
|
@ -873,7 +873,7 @@ static int __init cpia_pp_setup(char *str)
|
|||
parport_nr[parport_ptr++] = PPCPIA_PARPORT_NONE;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("cpia_pp=", cpia_pp_setup);
|
||||
|
|
|
@ -94,7 +94,7 @@ static struct console netconsole = {
|
|||
static int option_setup(char *opt)
|
||||
{
|
||||
configured = !netpoll_parse_options(&np, opt);
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("netconsole=", option_setup);
|
||||
|
|
|
@ -1973,7 +1973,7 @@ static int __init setup_xirc2ps_cs(char *str)
|
|||
MAYBE_SET(lockup_hack, 6);
|
||||
#undef MAYBE_SET
|
||||
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("xirc2ps_cs=", setup_xirc2ps_cs);
|
||||
|
|
|
@ -634,7 +634,7 @@ static void vrc4171_remove_sockets(void)
|
|||
static int __devinit vrc4171_card_setup(char *options)
|
||||
{
|
||||
if (options == NULL || *options == '\0')
|
||||
return 0;
|
||||
return 1;
|
||||
|
||||
if (strncmp(options, "irq:", 4) == 0) {
|
||||
int irq;
|
||||
|
@ -644,7 +644,7 @@ static int __devinit vrc4171_card_setup(char *options)
|
|||
vrc4171_irq = irq;
|
||||
|
||||
if (*options != ',')
|
||||
return 0;
|
||||
return 1;
|
||||
options++;
|
||||
}
|
||||
|
||||
|
@ -663,10 +663,10 @@ static int __devinit vrc4171_card_setup(char *options)
|
|||
}
|
||||
|
||||
if (*options != ',')
|
||||
return 0;
|
||||
return 1;
|
||||
options++;
|
||||
} else
|
||||
return 0;
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
||||
|
@ -688,7 +688,7 @@ static int __devinit vrc4171_card_setup(char *options)
|
|||
}
|
||||
|
||||
if (*options != ',')
|
||||
return 0;
|
||||
return 1;
|
||||
options++;
|
||||
|
||||
if (strncmp(options, "memnoprobe", 10) == 0)
|
||||
|
@ -700,7 +700,7 @@ static int __devinit vrc4171_card_setup(char *options)
|
|||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("vrc4171_card=", vrc4171_card_setup);
|
||||
|
|
|
@ -516,7 +516,7 @@ static int __devinit vrc4173_cardu_probe(struct pci_dev *dev,
|
|||
static int __devinit vrc4173_cardu_setup(char *options)
|
||||
{
|
||||
if (options == NULL || *options == '\0')
|
||||
return 0;
|
||||
return 1;
|
||||
|
||||
if (strncmp(options, "cardu1:", 7) == 0) {
|
||||
options += 7;
|
||||
|
@ -527,9 +527,9 @@ static int __devinit vrc4173_cardu_setup(char *options)
|
|||
}
|
||||
|
||||
if (*options != ',')
|
||||
return 0;
|
||||
return 1;
|
||||
} else
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (strncmp(options, "cardu2:", 7) == 0) {
|
||||
|
@ -538,7 +538,7 @@ static int __devinit vrc4173_cardu_setup(char *options)
|
|||
cardu_sockets[CARDU2].noprobe = 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("vrc4173_cardu=", vrc4173_cardu_setup);
|
||||
|
|
|
@ -2488,7 +2488,7 @@ static int option_setup(char *str)
|
|||
}
|
||||
ints[0] = i - 1;
|
||||
internal_ibmmca_scsi_setup(cur, ints);
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("ibmmcascsi=", option_setup);
|
||||
|
|
|
@ -466,7 +466,7 @@ static int __init fb_console_setup(char *this_opt)
|
|||
int i, j;
|
||||
|
||||
if (!this_opt || !*this_opt)
|
||||
return 0;
|
||||
return 1;
|
||||
|
||||
while ((options = strsep(&this_opt, ",")) != NULL) {
|
||||
if (!strncmp(options, "font:", 5))
|
||||
|
@ -481,10 +481,10 @@ static int __init fb_console_setup(char *this_opt)
|
|||
options++;
|
||||
}
|
||||
if (*options != ',')
|
||||
return 0;
|
||||
return 1;
|
||||
options++;
|
||||
} else
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!strncmp(options, "map:", 4)) {
|
||||
|
@ -496,7 +496,7 @@ static int __init fb_console_setup(char *this_opt)
|
|||
con2fb_map_boot[i] =
|
||||
(options[j++]-'0') % FB_MAX;
|
||||
}
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!strncmp(options, "vc:", 3)) {
|
||||
|
@ -518,7 +518,7 @@ static int __init fb_console_setup(char *this_opt)
|
|||
rotate = 0;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("fbcon=", fb_console_setup);
|
||||
|
|
|
@ -275,7 +275,7 @@ static int __init sti_setup(char *str)
|
|||
if (str)
|
||||
strlcpy (default_sti_path, str, sizeof (default_sti_path));
|
||||
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Assuming the machine has multiple STI consoles (=graphic cards) which
|
||||
|
@ -321,7 +321,7 @@ static int __init sti_font_setup(char *str)
|
|||
i++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* The optional linux kernel parameter "sti_font" defines which font
|
||||
|
|
|
@ -1588,7 +1588,7 @@ static int __init video_setup(char *options)
|
|||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
__setup("video=", video_setup);
|
||||
#endif
|
||||
|
|
|
@ -1378,7 +1378,7 @@ stifb_setup(char *options)
|
|||
int i;
|
||||
|
||||
if (!options || !*options)
|
||||
return 0;
|
||||
return 1;
|
||||
|
||||
if (strncmp(options, "off", 3) == 0) {
|
||||
stifb_disabled = 1;
|
||||
|
@ -1393,7 +1393,7 @@ stifb_setup(char *options)
|
|||
stifb_bpp_pref[i] = simple_strtoul(options, &options, 10);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("stifb=", stifb_setup);
|
||||
|
|
|
@ -578,7 +578,7 @@ static int __init audit_enable(char *str)
|
|||
audit_initialized ? "" : " (after initialization)");
|
||||
if (audit_initialized)
|
||||
audit_enabled = audit_default;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("audit=", audit_enable);
|
||||
|
|
|
@ -87,7 +87,7 @@ int randomize_va_space __read_mostly = 1;
|
|||
static int __init disable_randmaps(char *s)
|
||||
{
|
||||
randomize_va_space = 0;
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
__setup("norandmaps", disable_randmaps);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче