aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorAndrew Morton <akpm@linux-foundation.org>2007-05-17 01:10:54 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-17 08:23:03 -0400
commitade3aff25fb2dce76e2a9b53e1334bd0a174f739 (patch)
treea10770c6eb13c6c6dc9b74d208fc25e66aafc3f1 /include/linux
parent0b44f7a5b5078d737b3f5914978aabb761254840 (diff)
slub: fix handling of oversized slabs
I'm getting zillions of undefined references to __kmalloc_size_too_large on alpha. For some reason alpha is building out-of-line copies of kmalloc_slab() into lots of compilation units. It turns out that gcc just isn't smart enough to work out that __builtin_contant_p(size)==true implies that __builtin_contant_p(index)==true. So let's give it a bit of help. Cc: Christoph Lameter <clameter@sgi.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/slub_def.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h
index 5e2e7297dfaa..a9fb92862aaa 100644
--- a/include/linux/slub_def.h
+++ b/include/linux/slub_def.h
@@ -145,7 +145,12 @@ static inline struct kmem_cache *kmalloc_slab(size_t size)
145 if (index == 0) 145 if (index == 0)
146 return NULL; 146 return NULL;
147 147
148 if (index < 0) { 148 /*
149 * This function only gets expanded if __builtin_constant_p(size), so
150 * testing it here shouldn't be needed. But some versions of gcc need
151 * help.
152 */
153 if (__builtin_constant_p(size) && index < 0) {
149 /* 154 /*
150 * Generate a link failure. Would be great if we could 155 * Generate a link failure. Would be great if we could
151 * do something to stop the compile here. 156 * do something to stop the compile here.