[PATCH][1/2] fix unchecked returns from kmalloc() (in kernel/module.c)

From: Jesper Juhl
Date: Tue Dec 07 2004 - 16:20:26 EST



Problem reported by Katrina Tsipenyuk and the Fortify Software engineering
team in thread with subject "PROBLEM: unchecked returns from kmalloc() in
linux-2.6.10-rc2".

The patch attempts to handle a failed kmalloc() a bit better than it
currently is. As I see it (and I'm not familliar with this code) there's
no really good way to cope with kmalloc failing on us here, so the best we
can do is print an error message and return a meaningful error value. As
the function is used with __initcall() I don't think much will actually
come of the negatve return, but returning -ENOMEM seems to me to be the
proper thing to do. Comments from someone who's actually familliar with
the code is very welcome.

Patch has been compile tested, boot tested, and didn't immediately blow
up my kernel, but that's all. Please review before applying.

Signed-off-by: Jesper Juhl <juhl-lkml@xxxxxx>

diff -up linux-2.6.10-rc3-bk2-orig/kernel/module.c linux-2.6.10-rc3-bk2/kernel/module.c
--- linux-2.6.10-rc3-bk2-orig/kernel/module.c 2004-12-06 22:24:56.000000000 +0100
+++ linux-2.6.10-rc3-bk2/kernel/module.c 2004-12-07 21:17:00.000000000 +0100
@@ -334,6 +334,10 @@ static int percpu_modinit(void)
pcpu_num_allocated = 2;
pcpu_size = kmalloc(sizeof(pcpu_size[0]) * pcpu_num_allocated,
GFP_KERNEL);
+ if (!pcpu_size) {
+ printk(KERN_ERR "Unable to allocate per-cpu memory for modules.");
+ return -ENOMEM;
+ }
/* Static in-kernel percpu data (used). */
pcpu_size[0] = -ALIGN(__per_cpu_end-__per_cpu_start, SMP_CACHE_BYTES);
/* Free room. */



-
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/