The caller of slub_cpu_dead cannot be irq disabled (because slab_mutex is holding during the processing), there is no need to use irq_save. Just use irq_disable directly. Signed-off-by: Muchun Song <songmuchun@xxxxxxxxxxxxx> --- mm/slub.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mm/slub.c b/mm/slub.c index ee51857d8e9b..fbf592ef14ff 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -2529,13 +2529,12 @@ static void flush_all(struct kmem_cache *s) static int slub_cpu_dead(unsigned int cpu) { struct kmem_cache *s; - unsigned long flags; mutex_lock(&slab_mutex); list_for_each_entry(s, &slab_caches, list) { - local_irq_save(flags); + local_irq_disable(); __flush_cpu_slab(s, cpu); - local_irq_restore(flags); + local_irq_enable(); } mutex_unlock(&slab_mutex); return 0; -- 2.11.0