diff options
author | OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> | 2006-03-31 05:30:33 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-31 15:18:53 -0500 |
commit | 9b41046cd0ee0a57f849d6e1363f7933e363cca9 (patch) | |
tree | 246820e9493770e071cb92a48e7f72d8b9c90a98 /arch/x86_64/kernel/apic.c | |
parent | 68eef3b4791572ecb70249c7fb145bb3742dd899 (diff) |
[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>
Diffstat (limited to 'arch/x86_64/kernel/apic.c')
-rw-r--r-- | arch/x86_64/kernel/apic.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/arch/x86_64/kernel/apic.c b/arch/x86_64/kernel/apic.c index d54620147e8e..100a30c40044 100644 --- a/arch/x86_64/kernel/apic.c +++ b/arch/x86_64/kernel/apic.c | |||
@@ -615,7 +615,7 @@ static int __init apic_set_verbosity(char *str) | |||
615 | printk(KERN_WARNING "APIC Verbosity level %s not recognised" | 615 | printk(KERN_WARNING "APIC Verbosity level %s not recognised" |
616 | " use apic=verbose or apic=debug", str); | 616 | " use apic=verbose or apic=debug", str); |
617 | 617 | ||
618 | return 0; | 618 | return 1; |
619 | } | 619 | } |
620 | 620 | ||
621 | __setup("apic=", apic_set_verbosity); | 621 | __setup("apic=", apic_set_verbosity); |
@@ -1137,35 +1137,35 @@ int __init APIC_init_uniprocessor (void) | |||
1137 | static __init int setup_disableapic(char *str) | 1137 | static __init int setup_disableapic(char *str) |
1138 | { | 1138 | { |
1139 | disable_apic = 1; | 1139 | disable_apic = 1; |
1140 | return 0; | 1140 | return 1; |
1141 | } | 1141 | } |
1142 | 1142 | ||
1143 | static __init int setup_nolapic(char *str) | 1143 | static __init int setup_nolapic(char *str) |
1144 | { | 1144 | { |
1145 | disable_apic = 1; | 1145 | disable_apic = 1; |
1146 | return 0; | 1146 | return 1; |
1147 | } | 1147 | } |
1148 | 1148 | ||
1149 | static __init int setup_noapictimer(char *str) | 1149 | static __init int setup_noapictimer(char *str) |
1150 | { | 1150 | { |
1151 | if (str[0] != ' ' && str[0] != 0) | 1151 | if (str[0] != ' ' && str[0] != 0) |
1152 | return -1; | 1152 | return 0; |
1153 | disable_apic_timer = 1; | 1153 | disable_apic_timer = 1; |
1154 | return 0; | 1154 | return 1; |
1155 | } | 1155 | } |
1156 | 1156 | ||
1157 | static __init int setup_apicmaintimer(char *str) | 1157 | static __init int setup_apicmaintimer(char *str) |
1158 | { | 1158 | { |
1159 | apic_runs_main_timer = 1; | 1159 | apic_runs_main_timer = 1; |
1160 | nohpet = 1; | 1160 | nohpet = 1; |
1161 | return 0; | 1161 | return 1; |
1162 | } | 1162 | } |
1163 | __setup("apicmaintimer", setup_apicmaintimer); | 1163 | __setup("apicmaintimer", setup_apicmaintimer); |
1164 | 1164 | ||
1165 | static __init int setup_noapicmaintimer(char *str) | 1165 | static __init int setup_noapicmaintimer(char *str) |
1166 | { | 1166 | { |
1167 | apic_runs_main_timer = -1; | 1167 | apic_runs_main_timer = -1; |
1168 | return 0; | 1168 | return 1; |
1169 | } | 1169 | } |
1170 | __setup("noapicmaintimer", setup_noapicmaintimer); | 1170 | __setup("noapicmaintimer", setup_noapicmaintimer); |
1171 | 1171 | ||