mm, slub: discard slabs in unfreeze_partials() without irqs disabled
authorVlastimil Babka <vbabka@suse.cz>
Thu, 20 May 2021 12:01:57 +0000 (14:01 +0200)
committerVlastimil Babka <vbabka@suse.cz>
Fri, 3 Sep 2021 23:12:22 +0000 (01:12 +0200)
No need for disabled irqs when discarding slabs, so restore them before
discarding.

Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
mm/slub.c

index 1c4bd45..0a1e048 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -2406,6 +2406,8 @@ static void unfreeze_partials(struct kmem_cache *s,
        if (n)
                spin_unlock(&n->list_lock);
 
+       local_irq_restore(flags);
+
        while (discard_page) {
                page = discard_page;
                discard_page = discard_page->next;
@@ -2415,7 +2417,6 @@ static void unfreeze_partials(struct kmem_cache *s,
                stat(s, FREE_SLAB);
        }
 
-       local_irq_restore(flags);
 #endif /* CONFIG_SLUB_CPU_PARTIAL */
 }