Index: linux-2.6.21-rc2/mm/slub.c =================================================================== --- linux-2.6.21-rc2.orig/mm/slub.c 2007-02-28 17:20:35.000000000 -0800 +++ linux-2.6.21-rc2/mm/slub.c 2007-02-28 17:24:51.000000000 -0800 @@ -1230,8 +1230,10 @@ static int calculate_order(int size) static unsigned long calculate_alignment(unsigned long flags, unsigned long align) { - if (flags & (SLAB_MUST_HWCACHE_ALIGN|SLAB_HWCACHE_ALIGN)) + if (flags & SLAB_HWCACHE_ALIGN) return L1_CACHE_BYTES; + if (flags & SLAB_MUST_HWCACHE_ALIGN) + return max(align, (unsigned long)L1_CACHE_BYTES); if (align < ARCH_SLAB_MINALIGN) return ARCH_SLAB_MINALIGN;