diff options
author | Vlastimil Babka <vbabka@suse.cz> | 2021-05-12 14:04:43 +0200 |
---|---|---|
committer | Vlastimil Babka <vbabka@suse.cz> | 2021-09-04 01:12:22 +0200 |
commit | cfdf836e1f93df56ddd9a1d48b2deadf02f441fe (patch) | |
tree | 038be3757ff36054c967ee3f023717d8af98af05 /certs/system_keyring.c | |
parent | 3406e91bce47383f03fe839f02f7f4bef78c832c (diff) |
mm, slub: call deactivate_slab() without disabling irqs
The function is now safe to be called with irqs enabled, so move the calls
outside of irq disabled sections.
When called from ___slab_alloc() -> flush_slab() we have irqs disabled, so to
reenable them before deactivate_slab() we need to open-code flush_slab() in
___slab_alloc() and reenable irqs after modifying the kmem_cache_cpu fields.
But that means a IRQ handler meanwhile might have assigned a new page to
kmem_cache_cpu.page so we have to retry the whole check.
The remaining callers of flush_slab() are the IPI handler which has disabled
irqs anyway, and slub_cpu_dead() which will be dealt with in the following
patch.
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Diffstat (limited to 'certs/system_keyring.c')
0 files changed, 0 insertions, 0 deletions