CVE-2026-64418
Description
In the Linux kernel, the following vulnerability has been resolved:
mm: shrinker: fix shrinker_info teardown race with expansion
expand_shrinker_info() iterates all visible memcgs under shrinker_mutex, including memcgs that have not finished ->css_online() yet.
Once pn->shrinker_info has been published, teardown must stay serialized with expand_shrinker_info() until that memcg is either fully online or no longer visible to iteration. Today alloc_shrinker_info() breaks that rule by dropping shrinker_mutex before freeing a partially initialized shrinker_info array, which may cause the following race:
CPU0 CPU1 ==== ====
css_create --> list_add_tail_rcu(&css->sibling, &parent_css->children); online_css --> mem_cgroup_css_online --> alloc_shrinker_info --> alloc node0 info rcu_assign_pointer(C->node0->shrinker_info, old0) alloc node1 info -> FAIL -> goto err mutex_unlock(shrinker_mutex)
shrinker_alloc() --> shrinker_memcg_alloc --> mutex_lock(shrinker_mutex) expand_shrinker_info --> mem_cgroup_iter see the memcg expand_one_shrinker_info --> old0 = C->node0->shrinker_info memcpy(new->unit, old0->unit, ...);
free_shrinker_info --> kvfree(old0);
/* double free !! */ kvfree_rcu(old0, rcu);
The same problem exists later in mem_cgroup_css_online(). If alloc_shrinker_info() succeeds but a subsequent objcg allocation fails, the free_objcg -> free_shrinker_info() unwind path tears down the already published pn->shrinker_info arrays without shrinker_mutex. The expand_one_shrinker_info() can race with that teardown in the same way, leading to use-after-free or double-free of the old shrinker_info.
Fix this by serializing shrinker_info teardown with shrinker_mutex, and by keeping alloc_shrinker_info() error cleanup inside the locked section.
Affected products
78- osv-coords77 versionspkg:linux/kernelpkg:rpm/almalinux/kernelpkg:rpm/almalinux/kernel-64kpkg:rpm/almalinux/kernel-64k-corepkg:rpm/almalinux/kernel-64k-debugpkg:rpm/almalinux/kernel-64k-debug-corepkg:rpm/almalinux/kernel-64k-debug-develpkg:rpm/almalinux/kernel-64k-debug-devel-matchedpkg:rpm/almalinux/kernel-64k-debug-modulespkg:rpm/almalinux/kernel-64k-debug-modules-corepkg:rpm/almalinux/kernel-64k-debug-modules-extrapkg:rpm/almalinux/kernel-64k-develpkg:rpm/almalinux/kernel-64k-devel-matchedpkg:rpm/almalinux/kernel-64k-modulespkg:rpm/almalinux/kernel-64k-modules-corepkg:rpm/almalinux/kernel-64k-modules-extrapkg:rpm/almalinux/kernel-abi-stablelistspkg:rpm/almalinux/kernel-corepkg:rpm/almalinux/kernel-cross-headerspkg:rpm/almalinux/kernel-debugpkg:rpm/almalinux/kernel-debug-corepkg:rpm/almalinux/kernel-debug-develpkg:rpm/almalinux/kernel-debug-devel-matchedpkg:rpm/almalinux/kernel-debug-modulespkg:rpm/almalinux/kernel-debug-modules-corepkg:rpm/almalinux/kernel-debug-modules-extrapkg:rpm/almalinux/kernel-debug-uki-virtpkg:rpm/almalinux/kernel-develpkg:rpm/almalinux/kernel-devel-matchedpkg:rpm/almalinux/kernel-docpkg:rpm/almalinux/kernel-headerspkg:rpm/almalinux/kernel-modulespkg:rpm/almalinux/kernel-modules-corepkg:rpm/almalinux/kernel-modules-extrapkg:rpm/almalinux/kernel-modules-extra-matchedpkg:rpm/almalinux/kernel-rtpkg:rpm/almalinux/kernel-rt-64kpkg:rpm/almalinux/kernel-rt-64k-corepkg:rpm/almalinux/kernel-rt-64k-debugpkg:rpm/almalinux/kernel-rt-64k-debug-corepkg:rpm/almalinux/kernel-rt-64k-debug-develpkg:rpm/almalinux/kernel-rt-64k-debug-modulespkg:rpm/almalinux/kernel-rt-64k-debug-modules-corepkg:rpm/almalinux/kernel-rt-64k-debug-modules-extrapkg:rpm/almalinux/kernel-rt-64k-develpkg:rpm/almalinux/kernel-rt-64k-modulespkg:rpm/almalinux/kernel-rt-64k-modules-corepkg:rpm/almalinux/kernel-rt-64k-modules-extrapkg:rpm/almalinux/kernel-rt-corepkg:rpm/almalinux/kernel-rt-debugpkg:rpm/almalinux/kernel-rt-debug-corepkg:rpm/almalinux/kernel-rt-debug-develpkg:rpm/almalinux/kernel-rt-debug-modulespkg:rpm/almalinux/kernel-rt-debug-modules-corepkg:rpm/almalinux/kernel-rt-debug-modules-extrapkg:rpm/almalinux/kernel-rt-develpkg:rpm/almalinux/kernel-rt-modulespkg:rpm/almalinux/kernel-rt-modules-corepkg:rpm/almalinux/kernel-rt-modules-extrapkg:rpm/almalinux/kernel-toolspkg:rpm/almalinux/kernel-tools-libspkg:rpm/almalinux/kernel-tools-libs-develpkg:rpm/almalinux/kernel-uki-virtpkg:rpm/almalinux/kernel-uki-virt-addonspkg:rpm/almalinux/kernel-zfcpdumppkg:rpm/almalinux/kernel-zfcpdump-corepkg:rpm/almalinux/kernel-zfcpdump-develpkg:rpm/almalinux/kernel-zfcpdump-devel-matchedpkg:rpm/almalinux/kernel-zfcpdump-modulespkg:rpm/almalinux/kernel-zfcpdump-modules-corepkg:rpm/almalinux/kernel-zfcpdump-modules-extrapkg:rpm/almalinux/libperfpkg:rpm/almalinux/perfpkg:rpm/almalinux/python3-perfpkg:rpm/almalinux/rtlapkg:rpm/almalinux/rvpkg:rpm/opensuse/kernel-source&distro=openSUSE%20Tumbleweed
>= 6.7.0, < 6.12.96+ 76 more
- (no CPE)range: >= 6.7.0, < 6.12.96
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 6.12.0-211.50.1.el10_2
- (no CPE)range: < 7.1.7-1.1
Patches
Vulnerability mechanics
References
4News mentions
0No linked articles in our index yet.