Commit 970296997869 for kernel
commit 9702969978695d9a699a1f34771580cdbb153b33
Merge: 45a43ac5acc9 27125df9a5d3
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date: Mon Feb 16 13:41:38 2026 -0800
Merge tag 'slab-for-7.0-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab
Pull more slab updates from Vlastimil Babka:
- Two stable fixes for kmalloc_nolock() usage from NMI context (Harry
Yoo)
- Allow kmalloc_nolock() allocations to be freed with kfree() and thus
also kfree_rcu() and simplify slabobj_ext handling - we no longer
need to track how it was allocated to use the matching freeing
function (Harry Yoo)
* tag 'slab-for-7.0-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab:
mm/slab: drop the OBJEXTS_NOSPIN_ALLOC flag from enum objext_flags
mm/slab: allow freeing kmalloc_nolock()'d objects using kfree[_rcu]()
mm/slab: use prandom if !allow_spin
mm/slab: do not access current->mems_allowed_seq if !allow_spin
diff --cc mm/slub.c
index 42df791279d9,18c30872d196..865bc050f654
--- a/mm/slub.c
+++ b/mm/slub.c
@@@ -8334,9 -8373,11 +8377,12 @@@ void __init kmem_cache_init(void
void __init kmem_cache_init_late(void)
{
- flushwq = alloc_workqueue("slub_flushwq", WQ_MEM_RECLAIM, 0);
+ flushwq = alloc_workqueue("slub_flushwq", WQ_MEM_RECLAIM | WQ_PERCPU,
+ 0);
WARN_ON(!flushwq);
+ #ifdef CONFIG_SLAB_FREELIST_RANDOM
+ prandom_init_once(&slab_rnd_state);
+ #endif
}
int do_kmem_cache_create(struct kmem_cache *s, const char *name,