From: Dmitry Torokhov <dtor_core@ameritech.net>
To: rusty@rustcorp.com.au
Cc: Andrew Morton <akpm@osdl.org>, LKML <linux-kernel@vger.kernel.org>
Subject: Subject: Fix processing of obsolete-style setup options
Date: Wed, 11 Jan 2006 01:45:29 -0500 [thread overview]
Message-ID: <200601110145.29776.dtor_core@ameritech.net> (raw)
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;
/*
reply other threads:[~2006-01-11 6:45 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200601110145.29776.dtor_core@ameritech.net \
--to=dtor_core@ameritech.net \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rusty@rustcorp.com.au \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox