Fix CONFIG_SLAB=y CONFIG_DEBUG_SLAB=y build error and warnings. Now that ARCH_SLAB_MINALIGN defaults to __alignof__(unsigned long long), it is always defined (when slab.h included), but cannot be used in #if: mm/slab.c: In function ¡cache_alloc_debugcheck_after¢: mm/slab.c:3156:5: warning: "__alignof__" is not defined mm/slab.c:3156:5: error: missing binary operator before token "(" make[1]: *** [mm/slab.o] Error 1 So just remove the #if and #endif lines, but then 64-bit build warns: mm/slab.c: In function ¡cache_alloc_debugcheck_after¢: mm/slab.c:3156:6: warning: cast from pointer to integer of different size mm/slab.c:3158:10: warning: format ¡%d¢ expects type ¡int¢, but argument 3 has type ¡long unsigned int¢ Fix those with casts, whatever the actual type of ARCH_SLAB_MINALIGN. Signed-off-by: Hugh Dickins --- mm/slab.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) --- mmotm/mm/slab.c 2011-07-05 12:36:54.294718254 -0700 +++ linux/mm/slab.c 2011-07-05 14:19:24.942328542 -0700 @@ -3153,12 +3153,10 @@ static void *cache_alloc_debugcheck_afte objp += obj_offset(cachep); if (cachep->ctor && cachep->flags & SLAB_POISON) cachep->ctor(objp); -#if ARCH_SLAB_MINALIGN - if ((u32)objp & (ARCH_SLAB_MINALIGN-1)) { + if ((unsigned long)objp & (ARCH_SLAB_MINALIGN-1)) { printk(KERN_ERR "0x%p: not aligned to ARCH_SLAB_MINALIGN=%d\n", - objp, ARCH_SLAB_MINALIGN); + objp, (int)ARCH_SLAB_MINALIGN); } -#endif return objp; } #else