Re: [PATCH] kernel/module.c - fix warning and reduce stack usage - reintroduction of mistakenly dropped patch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, 3 Apr 2005, Jesper Juhl wrote:

> 
> Hi Andrew,
> 
> Reading your 2.6.12-rc1-mm4 announce text I see
> 
> ...
> -figure-out-who-is-inserting-bogus-modules-warning-fix.patch
> 
>  Folded into figure-out-who-is-inserting-bogus-modules.patch
> ...
> figure-out-who-is-inserting-bogus-modules.patch
>   Figure out who is inserting bogus modules
> ...
> 
> However, it seems you did *not* roll 
> figure-out-who-is-inserting-bogus-modules-warning-fix.patch into 
> figure-out-who-is-inserting-bogus-modules.patch but instead just dropped 
> the patch.
> 
> It also turns out I had a small boundary error (off-by-one) in my original 
> patch which Yum Rayan spotted and fixed in a patch he wrote that also 
> reduces the stack usage of the function (by dynamically allocating the 
> needed mem for 'args' instead of using a static 512 byte array - see the 
> LKML thread with subject "[PATCH] Reduce stack usage in module.c"), so 
> below you'll find an updated patch that reintroduce 
> figure-out-who-is-inserting-bogus-modules-warning-fix.patch on top of 
> 2.6.12-rc1-mm4 and includes Yum Rayan's fix for the off-by-one and also 
> adopts his use of kmalloc() instead of large static array.
> 
> Yum Rayan's patch does more than what I've included below, I've only 
> included his changes to the who_is_doing_it() function, if you want the 
> rest of his changes then please see the original thread for his full 
> patch.
> 
> Here's the updated figure-out-who-is-inserting-bogus-modules-warning-fix.patch
> 
In case you prefer the static array, so the function will never fail due 
to OOM, then here's an alternative version of my original patch /with/ the 
static array but /without/ the off-by-one error  :

Signed-off-by: Jesper Juhl <[email protected]>

--- linux-2.6.12-rc1-mm4-orig/kernel/module.c	2005-03-31 21:20:07.000000000 +0200
+++ linux-2.6.12-rc1-mm4/kernel/module.c	2005-04-03 02:04:39.000000000 +0200
@@ -1400,9 +1400,12 @@ static void who_is_doing_it(void)
 {
 	/* Print out all the args. */
 	char args[512];
-	unsigned int i, len = current->mm->arg_end - current->mm->arg_start;
+	unsigned long i, len = current->mm->arg_end - current->mm->arg_start;
 
-	copy_from_user(args, (void *)current->mm->arg_start, len);
+	if (len > 511)
+		len = 511;
+
+	len -= copy_from_user(args, (void *)current->mm->arg_start, len);
 
 	for (i = 0; i < len; i++) {
 		if (args[i] == '\0')


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux