CVE-2026-64418: mm: shrinker: fix shrinker_info teardown race with expansion

Published Jul 25, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

mm: shrinker: fix shrinkerinfo teardown race with expansion

expandshrinkerinfo() iterates all visible memcgs under shrinkermutex, including memcgs that have not finished ->cssonline() yet.

Once pn->shrinkerinfo has been published, teardown must stay serialized with expandshrinkerinfo() until that memcg is either fully online or no longer visible to iteration. Today allocshrinkerinfo() breaks that rule by dropping shrinkermutex before freeing a partially initialized shrinkerinfo array, which may cause the following race:

CPU0 CPU1 ==== ====

csscreate --> listaddtailrcu(&css->sibling, &parentcss->children); onlinecss --> memcgroupcssonline --> allocshrinkerinfo --> alloc node0 info rcuassignpointer(C->node0->shrinkerinfo, old0) alloc node1 info -> FAIL -> goto err mutexunlock(shrinkermutex)

shrinkeralloc() --> shrinkermemcgalloc --> mutexlock(shrinkermutex) expandshrinkerinfo --> memcgroupiter see the memcg expandoneshrinkerinfo --> old0 = C->node0->shrinkerinfo memcpy(new->unit, old0->unit, ...);

freeshrinkerinfo --> kvfree(old0);

/ double free !! / kvfreercu(old0, rcu);

The same problem exists later in memcgroupcssonline(). If allocshrinkerinfo() succeeds but a subsequent objcg allocation fails, the freeobjcg -> freeshrinkerinfo() unwind path tears down the already published pn->shrinkerinfo arrays without shrinkermutex. The expandoneshrinkerinfo() can race with that teardown in the same way, leading to use-after-free or double-free of the old shrinkerinfo.

Fix this by serializing shrinkerinfo teardown with shrinkermutex, and by keeping allocshrinkerinfo() error cleanup inside the locked section.

Affected Software

6 affected components
Linux Kernel
Linux Linux kernel>=6.7<6.12.96
Linux Linux kernel>=6.13<6.18.39
Linux Linux kernel>=6.19<7.1.4
Linux Linux kernel=7.2-rc1
Linux Linux kernel=7.2-rc2

Event History

Jul 25, 2026
CVE Published
via MITRE·08:50 AM
Data Sourced
via MITRE·08:50 AM
DescriptionSeverity
Data Sourced
via Red Hat·10:14 AM
DescriptionSeverityAffected Software
Data Sourced
via NVD·10:17 AM
RemedyDescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2026-64418?

CVE-2026-64418 has a risk rating of 60, indicating a moderate severity vulnerability.

2

How do I fix CVE-2026-64418?

To mitigate CVE-2026-64418, update your Linux kernel to the latest version where the vulnerability has been patched.

3

What systems are affected by CVE-2026-64418?

CVE-2026-64418 affects versions of the Linux kernel prior to the remediation in the latest security update.

4

What type of vulnerability is CVE-2026-64418?

CVE-2026-64418 is classified under Use After Free and Double Free vulnerabilities.

5

What is the impact of CVE-2026-64418?

The impact of CVE-2026-64418 can lead to instability or unexpected behavior in the Linux kernel due to race conditions in memory management.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203