* Subject: Fix processing of obsolete-style setup options
@ 2006-01-11 6:45 Dmitry Torokhov
0 siblings, 0 replies; only message in thread
From: Dmitry Torokhov @ 2006-01-11 6:45 UTC (permalink / raw)
To: rusty; +Cc: Andrew Morton, LKML
When kernel init code checks for presence of obsolete-style
kernel parameters it gets confused if parameters have common
prefix, such as "nousb" and "nousbstorage". Make sure that
we compare entire names, not just common prefixes.
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
---
init/main.c | 30 ++++++++++++++++--------------
1 files changed, 16 insertions(+), 14 deletions(-)
Index: work/init/main.c
===================================================================
--- work.orig/init/main.c
+++ work/init/main.c
@@ -158,24 +158,22 @@ static const char *panic_later, *panic_p
extern struct obs_kernel_param __setup_start[], __setup_end[];
-static int __init obsolete_checksetup(char *line)
+static int __init obsolete_checksetup(char *line, int len)
{
struct obs_kernel_param *p;
p = __setup_start;
do {
- int n = strlen(p->str);
- if (!strncmp(line, p->str, n)) {
+ if (!strncmp(line, p->str, len) && len == strlen(p->str)) {
if (p->early) {
- /* Already done in parse_early_param? (Needs
- * exact match on param part) */
- if (line[n] == '\0' || line[n] == '=')
- return 1;
+ /* Already done in parse_early_param? */
+ return 1;
} else if (!p->setup_func) {
- printk(KERN_WARNING "Parameter %s is obsolete,"
- " ignored\n", p->str);
+ printk(KERN_WARNING
+ "Parameter %s is obsolete, ignored\n",
+ p->str);
return 1;
- } else if (p->setup_func(line + n))
+ } else if (p->setup_func(line + len))
return 1;
}
p++;
@@ -224,21 +222,25 @@ __setup("loglevel=", loglevel);
*/
static int __init unknown_bootoption(char *param, char *val)
{
+ int len = strlen(param);
+
/* Change NUL term back to "=", to make "param" the whole string. */
if (val) {
/* param=val or param="val"? */
- if (val == param+strlen(param)+1)
+ if (val == param + len + 1) {
val[-1] = '=';
- else if (val == param+strlen(param)+2) {
+ len++;
+ } else if (val == param + len + 2) {
val[-2] = '=';
- memmove(val-1, val, strlen(val)+1);
+ memmove(val - 1, val, strlen(val) + 1);
val--;
+ len++;
} else
BUG();
}
/* Handle obsolete-style parameters */
- if (obsolete_checksetup(param))
+ if (obsolete_checksetup(param, len))
return 0;
/*
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2006-01-11 6:45 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-01-11 6:45 Subject: Fix processing of obsolete-style setup options Dmitry Torokhov
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.