SLUB: Fix numa bootstrap NUMA bootstrap calls new_slab() if more than one node is found on bootup. new_slab() assumes a standard slab context where interrupts must be disabled. It enables interrupts for the call into the page allocator and then disables them again. I dropped the interrupt preservation code just before SLUB v6 because it looked useless there. SLUB worked on the following NUMA tests that just had a single node. Sigh. Enable interrupts after calling new_slab. Signed-off-by: Christoph Lameter Index: linux-2.6.21-rc5-mm4/mm/slub.c =================================================================== --- linux-2.6.21-rc5-mm4.orig/mm/slub.c 2007-04-03 18:07:41.000000000 -0700 +++ linux-2.6.21-rc5-mm4/mm/slub.c 2007-04-03 18:08:17.000000000 -0700 @@ -1436,6 +1436,8 @@ static int init_kmem_cache_nodes(struct BUG_ON(s->size < sizeof(struct kmem_cache_node)); page = new_slab(kmalloc_caches, gfpflags, node); + /* new_slab() disables interupts */ + local_irq_enable(); BUG_ON(!page); n = page->freelist;