]> git.proxmox.com Git - mirror_spl.git/blobdiff - module/spl/spl-kmem.c
Fix race in spl_kmem_cache_reap_now()
[mirror_spl.git] / module / spl / spl-kmem.c
index 3c01ab69c0671abe75abdafe4ec9173389c9dd70..a2dcea03968164a6ee72c1e8da81b01b0d3b9e6b 100644 (file)
@@ -2196,12 +2196,12 @@ spl_kmem_cache_reap_now(spl_kmem_cache_t *skc, int count)
        /* Reclaim from the magazine then the slabs ignoring age and delay. */
        if (spl_kmem_cache_expire & KMC_EXPIRE_MEM) {
                spl_kmem_magazine_t *skm;
-               int i;
+               unsigned long irq_flags;
 
-               for_each_online_cpu(i) {
-                       skm = skc->skc_mag[i];
-                       spl_cache_flush(skc, skm, skm->skm_avail);
-               }
+               local_irq_save(irq_flags);
+               skm = skc->skc_mag[smp_processor_id()];
+               spl_cache_flush(skc, skm, skm->skm_avail);
+               local_irq_restore(irq_flags);
        }
 
        spl_slab_reclaim(skc, count, 1);