Re: [PATCH] Kernel parameter parsing fix
From: Zhu, Yi
Date: Sat May 22 2004 - 09:54:41 EST
On Fri, 21 May 2004, Andrew Morton wrote:
>
> Can you explain waht problem this solves? An example?
The real problem happens on 2.6.5 -mm kernel, but not vanilla kernel
because of the early_param patch.
For example in arch/i386/kernel/setup.c:
__early_param("acpi", early_acpi);
In drivers/acpi/osl.c:
__setup("acpi_os_name=", acpi_os_name_setup);
So if one passes kernel parameter in the bootloader as below,
"acpi=force acpi_os_name=my_override_name"
the "acpi_os_name=" parameter will take the setup func for "acpi",
because they begin with the same string "acpi".
Vanilla kernel doesn't have the problem now because most of the
parameter strings have a trailing '=', so "acpi_os_name" won't
take the setup func for "acpi=". But a safer way is to checkup
the parameter string when parsing it as the patch did.
>
> The patch is wordwrapped
Sorry, please try this time.
--- linux-2.6.6.orig/init/main.c 2004-05-14 13:38:31.000000000 +0800
+++ linux-2.6.6/init/main.c 2004-05-15 00:25:41.339261792 +0800
@@ -149,11 +149,15 @@ static int __init obsolete_checksetup(ch
{
struct obs_kernel_param *p;
extern struct obs_kernel_param __setup_start, __setup_end;
+ char *ptr;
+ int len = strlen(line);
+ if ((ptr = strchr(line, '=')))
+ len = ptr - line;
p = &__setup_start;
do {
int n = strlen(p->str);
- if (!strncmp(line, p->str, n)) {
+ if (len <= n && !strncmp(line, p->str, n)) {
if (!p->setup_func) {
printk(KERN_WARNING "Parameter %s is
obsolete, ignored\n", p->str);
return 1;
Thanks,
--
-----------------------------------------------------------------
Opinions expressed are those of the author and do not represent
Intel Corp.
Zhu Yi (Chuyee)
GnuPG v1.0.6 (GNU/Linux)
http://cn.geocities.com/chewie_chuyee/gpg.txt or
$ gpg --keyserver wwwkeys.pgp.net --recv-keys 71C34820
1024D/71C34820 C939 2B0B FBCE 1D51 109A 55E5 8650 DB90 71C3 4820
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/