diff options
author | Andrew Morton <akpm@linux-foundation.org> | 2007-05-17 01:10:54 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-17 08:23:03 -0400 |
commit | ade3aff25fb2dce76e2a9b53e1334bd0a174f739 (patch) | |
tree | a10770c6eb13c6c6dc9b74d208fc25e66aafc3f1 /include/linux/slub_def.h | |
parent | 0b44f7a5b5078d737b3f5914978aabb761254840 (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/slub_def.h')
-rw-r--r-- | include/linux/slub_def.h | 7 |
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. |