Index: linux-2.6.18-rc1/mm/slab.c =================================================================== --- linux-2.6.18-rc1.orig/mm/slab.c 2006-07-05 21:09:49.000000000 -0700 +++ linux-2.6.18-rc1/mm/slab.c 2006-07-11 22:27:03.604860712 -0700 @@ -1026,6 +1026,7 @@ static inline int cache_free_alien(struc { struct slab *slabp = virt_to_slab(objp); int nodeid = slabp->nodeid; + int node = numa_node_id(); struct kmem_list3 *l3; struct array_cache *alien = NULL; @@ -1033,10 +1034,10 @@ static inline int cache_free_alien(struc * Make sure we are not freeing a object from another node to the array * cache on this cpu. */ - if (likely(slabp->nodeid == numa_node_id())) + if (likely(slabp->nodeid == node)) return 0; - l3 = cachep->nodelists[numa_node_id()]; + l3 = cachep->nodelists[node]; STATS_INC_NODEFREES(cachep); if (l3->alien && l3->alien[nodeid]) { alien = l3->alien[nodeid];