diff options
Diffstat (limited to 'patches/mm_slub__discard_slabs_in_unfreeze_partials_without_irqs_disabled.patch')
-rw-r--r-- | patches/mm_slub__discard_slabs_in_unfreeze_partials_without_irqs_disabled.patch | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/patches/mm_slub__discard_slabs_in_unfreeze_partials_without_irqs_disabled.patch b/patches/mm_slub__discard_slabs_in_unfreeze_partials_without_irqs_disabled.patch new file mode 100644 index 000000000000..a567b9edfe46 --- /dev/null +++ b/patches/mm_slub__discard_slabs_in_unfreeze_partials_without_irqs_disabled.patch @@ -0,0 +1,38 @@ +Subject: mm, slub: discard slabs in unfreeze_partials() without irqs disabled +From: Vlastimil Babka <vbabka@suse.cz> +Date: Thu May 20 14:01:57 2021 +0200 + +From: Vlastimil Babka <vbabka@suse.cz> + +No need for disabled irqs when discarding slabs, so restore them before +discarding. + +Signed-off-by: Vlastimil Babka <vbabka@suse.cz> +Signed-off-by: Thomas Gleixner <tglx@linutronix.de> + + +--- + mm/slub.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) +--- +diff --git a/mm/slub.c b/mm/slub.c +index 5570ba7ae66c..11a4edb6aec2 100644 +--- a/mm/slub.c ++++ b/mm/slub.c +@@ -2347,6 +2347,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; +@@ -2356,7 +2358,6 @@ static void unfreeze_partials(struct kmem_cache *s, + stat(s, FREE_SLAB); + } + +- local_irq_restore(flags); + #endif /* CONFIG_SLUB_CPU_PARTIAL */ + } + |