Index: linux-2.6.19-rc6-mm1/mm/slab.c =================================================================== --- linux-2.6.19-rc6-mm1.orig/mm/slab.c 2006-11-29 12:45:34.000000000 -0600 +++ linux-2.6.19-rc6-mm1/mm/slab.c 2006-11-29 13:10:40.407895491 -0600 @@ -3584,7 +3584,7 @@ __cache_alloc_node(struct kmem_cache *ca int nodeid, void *caller) { unsigned long save_flags; - void *ptr; + void *ptr = NULL; cache_alloc_debugcheck_before(cachep, flags); local_irq_save(save_flags); @@ -3592,7 +3592,7 @@ __cache_alloc_node(struct kmem_cache *ca if (nodeid == -1 || nodeid == numa_node_id() || !cachep->nodelists[nodeid]) ptr = ____cache_alloc(cachep, flags); - else + if (!ptr) ptr = ____cache_alloc_node(cachep, flags, nodeid); local_irq_restore(save_flags);