From: Rusty Russell <rusty@rustcorp.com.au>
To: Mikael Pettersson <mikpe@csd.uu.se>
Cc: linux-kernel@vger.kernel.org
Subject: Re: kernel param and KBUILD_MODNAME name-munging mess
Date: Tue, 21 Jan 2003 18:23:38 +1100 [thread overview]
Message-ID: <20030123063701.4A4CD2C57C@lists.samba.org> (raw)
In-Reply-To: Your message of "Mon, 20 Jan 2003 14:41:03 BST." <200301201341.OAA23795@harpo.it.uu.se>
In message <200301201341.OAA23795@harpo.it.uu.se> you write:
> Booting kernel 2.5.59 with the "-s" kernel boot parameter
> doesn't get you into single-user mode like it should.
>
> One part of the problem is Rusty's new module option and
> kernel boot parameter parsing code, which changes '-' to
> '_' in every string. This change is not reverted when the
> string is found NOT to be a kernel option, with the result
> that "_s" is passed to init instead of "-s".
That's a bug. Good catch. Fix below.
> Why is this s/-/_/ stuff done at all?
> I suppose it's because the string is compared with
> MODULE_PARAM_PREFIX, which is __stringify(KBUILD_MODNAME) ".",
> and KBUILD_MODNAME is the module name after s/-/_/.
Basically because making - and _ equal is the only sane way to unify
parameter names without pissing off users, and life for coders is much
nicer when KBUILD_MODNAME is a unique valid C prefix for that module.
Thanks for the report!
Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
Name: Avoid mangling - in parameters
Author: Rusty Russell
Status: Trivial (tested in userspace framework)
D: Mikael Pettersson points out that "-s" gets mangled to "_s" on the
D: kernel command line, even though it turns out not to be a
D: parameter.
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.59/kernel/params.c working-2.5.59-underscore/kernel/params.c
--- linux-2.5.59/kernel/params.c 2003-01-02 14:48:01.000000000 +1100
+++ working-2.5.59-underscore/kernel/params.c 2003-01-21 18:16:05.000000000 +1100
@@ -27,6 +27,22 @@
#define DEBUGP(fmt, a...)
#endif
+static inline int dash2underscore(char c)
+{
+ if (c == '-')
+ return '_';
+ return c;
+}
+
+static inline int parameq(const char *input, const char *paramname)
+{
+ unsigned int i;
+ for (i = 0; dash2underscore(input[i]) == paramname[i]; i++)
+ if (input[i] == '\0')
+ return 1;
+ return 0;
+}
+
static int parse_one(char *param,
char *val,
struct kernel_param *params,
@@ -37,7 +53,7 @@ static int parse_one(char *param,
/* Find parameter */
for (i = 0; i < num_params; i++) {
- if (strcmp(param, params[i].name) == 0) {
+ if (parameq(param, params[i].name)) {
DEBUGP("They are equal! Calling %p\n",
params[i].set);
return params[i].set(val, ¶ms[i]);
@@ -69,8 +85,6 @@ static char *next_arg(char *args, char *
if (equals == 0) {
if (args[i] == '=')
equals = i;
- else if (args[i] == '-')
- args[i] = '_';
}
if (args[i] == '"')
in_quote = !in_quote;
next prev parent reply other threads:[~2003-01-23 6:27 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-01-20 13:41 kernel param and KBUILD_MODNAME name-munging mess Mikael Pettersson
2003-01-21 6:26 ` Vamsi Krishna S.
2003-01-21 7:23 ` Rusty Russell [this message]
2003-01-22 9:51 ` Ingo Oeser
2003-01-22 10:20 ` Mikael Pettersson
2003-01-22 11:19 ` Alex Riesen
2003-01-22 17:25 ` Kai Germaschewski
2003-01-22 19:41 ` Roman Zippel
2003-01-28 9:15 ` Rusty Russell
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=20030123063701.4A4CD2C57C@lists.samba.org \
--to=rusty@rustcorp.com.au \
--cc=linux-kernel@vger.kernel.org \
--cc=mikpe@csd.uu.se \
/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 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.