kmalloc_sizes.h breakage

From: David Mosberger (davidm@napali.hpl.hp.com)
Date: Wed Apr 09 2003 - 00:58:22 EST


Someone forgot that the cache_sizes array needs to be NULL terminated.
This, combined with the NFSD 64-bit binary compatibility breakage
caused instant kernel death because kmalloc() (via NFSD) would attempt
to alloc a huge chunk of memory and run past the end of the
cache_sizes array. In other words, a fun evening chasing down bugs.
Not.

(The patch also gets rid of some trailing whitespace, in case you
 wonder about those "invisible" changes.)

        --david

===== mm/slab.c 1.73 vs edited =====
--- 1.73/mm/slab.c Thu Mar 27 21:16:47 2003
+++ edited/mm/slab.c Tue Apr 8 17:52:44 2003
@@ -387,14 +387,15 @@
 };
 
 /* Must match cache_sizes above. Out of line to keep cache footprint low. */
-static struct {
- char *name;
+static struct {
+ char *name;
         char *name_dma;
-} cache_names[] = {
+} cache_names[] = {
 #define CACHE(x) { .name = "size-" #x, .name_dma = "size-" #x "(DMA)" },
 #include <linux/kmalloc_sizes.h>
+ { 0, }
 #undef CACHE
-};
+};
 
 struct arraycache_init initarray_cache __initdata = { { 0, BOOT_CPUCACHE_ENTRIES, 1, 0} };
 struct arraycache_init initarray_generic __initdata = { { 0, BOOT_CPUCACHE_ENTRIES, 1, 0} };
-
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 Apr 15 2003 - 22:00:17 EST