Index: linux-2.6.19-rc6-mm1/mm/slab.c =================================================================== --- linux-2.6.19-rc6-mm1.orig/mm/slab.c 2006-11-29 13:10:40.000000000 -0600 +++ linux-2.6.19-rc6-mm1/mm/slab.c 2006-11-29 14:50:35.740972702 -0600 @@ -3592,8 +3592,9 @@ __cache_alloc_node(struct kmem_cache *ca if (nodeid == -1 || nodeid == numa_node_id() || !cachep->nodelists[nodeid]) ptr = ____cache_alloc(cachep, flags); - if (!ptr) - ptr = ____cache_alloc_node(cachep, flags, nodeid); + if (!ptr && cachep->nodelists[nodeid]) + ptr = ____cache_alloc_node(cachep, flags, + nodeid == -1 ? numa_node_id() : nodeid); local_irq_restore(save_flags); ptr = cache_alloc_debugcheck_after(cachep, flags, ptr, caller);