Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ade3aff2 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds
Browse files

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: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 0b44f7a5
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -145,7 +145,12 @@ static inline struct kmem_cache *kmalloc_slab(size_t size)
	if (index == 0)
		return NULL;

	if (index < 0) {
	/*
	 * This function only gets expanded if __builtin_constant_p(size), so
	 * testing it here shouldn't be needed.  But some versions of gcc need
	 * help.
	 */
	if (__builtin_constant_p(size) && index < 0) {
		/*
		 * Generate a link failure. Would be great if we could
		 * do something to stop the compile here.