From 638653afe5d3244c2c33928ff1acdf0b4d03cf4c Mon Sep 17 00:00:00 2001 From: Christoph Lameter Date: Sun, 6 May 2007 14:49:38 -0700 Subject: [PATCH] --- yaml --- r: 54200 b: refs/heads/master c: 614410d5892af5f86d0ec14e28f9f6d5f4ac9e9b h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/include/linux/slub_def.h | 8 ++++++-- trunk/mm/slub.c | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index c9946b0bcf01..3297b7654d92 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 47bfdc0d5a18a4b760ffb6a332932aaa5c0859e0 +refs/heads/master: 614410d5892af5f86d0ec14e28f9f6d5f4ac9e9b diff --git a/trunk/include/linux/slub_def.h b/trunk/include/linux/slub_def.h index 30b154ce7289..f8e0c86c48a9 100644 --- a/trunk/include/linux/slub_def.h +++ b/trunk/include/linux/slub_def.h @@ -80,8 +80,12 @@ extern struct kmem_cache kmalloc_caches[KMALLOC_SHIFT_HIGH + 1]; */ static inline int kmalloc_index(int size) { - if (size == 0) - return 0; + /* + * We should return 0 if size == 0 but we use the smallest object + * here for SLAB legacy reasons. + */ + WARN_ON_ONCE(size == 0); + if (size > 64 && size <= 96) return 1; if (size > 128 && size <= 192) diff --git a/trunk/mm/slub.c b/trunk/mm/slub.c index 4a8585befd84..9d52cce7c999 100644 --- a/trunk/mm/slub.c +++ b/trunk/mm/slub.c @@ -1979,7 +1979,7 @@ static struct kmem_cache *get_slab(size_t size, gfp_t flags) { int index = kmalloc_index(size); - if (!size) + if (!index) return NULL; /* Allocation too large? */