Re: two 2.5 modules bugs

From: Rusty Russell (rusty@rustcorp.com.au)
Date: Mon Dec 30 2002 - 06:39:14 EST


> In message <200212292018.VAA25446@harpo.it.uu.se> you write:
> > >long". The obvious fix (untested) is:
> > >
> > Tested. This patch makes the parport_pc module work again. Thanks.
>
> Linus, please apply. Mikael, thanks for the excellent bug report!
>
> Rusty.
> --
> Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
>
> Name: Fix MODULE_PARM for arrays of s.

And this as well. We restore the ","s after parsing: if expect to
keep pointers to this stuff, we must not do that.

Linus, please apply.

diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .5399-linux-2.5-bk/kernel/params.c .5399-linux-2.5-bk.updated/kernel/params.c
--- .5399-linux-2.5-bk/kernel/params.c 2002-12-26 15:41:06.000000000 +1100
+++ .5399-linux-2.5-bk.updated/kernel/params.c 2002-12-30 20:30:38.000000000 +1100
@@ -233,6 +233,7 @@ int param_array(const char *name,
         int ret;
         unsigned int count = 0;
         struct kernel_param kp;
+ char save;
 
         /* Get the name right for errors. */
         kp.name = name;
@@ -247,7 +248,6 @@ int param_array(const char *name,
         /* We expect a comma-separated list of values. */
         do {
                 int len;
- char save;
 
                 if (count > max) {
                         printk(KERN_ERR "%s: can only take %i arguments\n",
@@ -256,18 +256,17 @@ int param_array(const char *name,
                 }
                 len = strcspn(val, ",");
 
- /* Temporarily nul-terminate and parse */
+ /* nul-terminate and parse */
                 save = val[len];
                 ((char *)val)[len] = '\0';
                 ret = set(val, &kp);
- ((char *)val)[len] = save;
 
                 if (ret != 0)
                         return ret;
                 kp.arg += elemsize;
                 val += len+1;
                 count++;
- } while (val[-1] == ',');
+ } while (save == ',');
 
         if (count < min) {
                 printk(KERN_ERR "%s: needs at least %i arguments\n",
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Dec 31 2002 - 22:00:16 EST