diff --git a/[refs] b/[refs] index 81d1c8a53962..11ac0eff8109 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 40e59a61669a3cab9e0bd24644e29155d6b00970 +refs/heads/master: a4523a8b38089478f93bc053c31f678c63f5ee1b diff --git a/trunk/mm/slab.c b/trunk/mm/slab.c index b1d643b5238d..d31a06bfbea5 100644 --- a/trunk/mm/slab.c +++ b/trunk/mm/slab.c @@ -2200,11 +2200,14 @@ static void drain_cpu_caches(struct kmem_cache *cachep) check_irq_on(); for_each_online_node(node) { l3 = cachep->nodelists[node]; - if (l3) { + if (l3 && l3->alien) + drain_alien_cache(cachep, l3->alien); + } + + for_each_online_node(node) { + l3 = cachep->nodelists[node]; + if (l3) drain_array(cachep, l3, l3->shared, 1, node); - if (l3->alien) - drain_alien_cache(cachep, l3->alien); - } } }