CVE-2026-64418

Updated on 25 Jul 2026

Severity

7.8 High severity

Details

CVSS score
7.8
CVSS vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Overview

About vulnerability

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.

Details

KernelCare state

Live-patch status from KernelCare for each operating system.

Operating system Status Covered kernels
AlmaLinux 10 In Rollout
61 kernels
  • 6.12.0-55.27.1.el10_0
  • 6.12.0-55.28.1.el10_0
  • 6.12.0-55.29.1.el10_0
  • 6.12.0-55.30.1.el10_0
  • 6.12.0-55.31.1.el10_0
  • 6.12.0-55.32.1.el10_0
  • 6.12.0-55.33.1.el10_0
  • 6.12.0-55.34.1.el10_0
  • 6.12.0-55.37.1.el10_0
  • 6.12.0-55.38.1.el10_0
  • 6.12.0-55.39.1.el10_0
  • 6.12.0-55.40.1.el10_0
  • 6.12.0-55.42.1.el10_0
  • 6.12.0-55.43.1.el10_0
  • 6.12.0-124.8.1.el10_1
  • 6.12.0-124.13.1.el10_1
  • 6.12.0-124.16.1.el10_1
  • 6.12.0-124.20.1.el10_1
  • 6.12.0-124.21.1.el10_1
  • 6.12.0-124.27.1.el10_1
  • 6.12.0-124.28.1.el10_1
  • 6.12.0-124.29.1.el10_1
  • 6.12.0-124.31.1.el10_1
  • 6.12.0-124.35.1.el10_1
  • 6.12.0-124.38.1.el10_1
  • 6.12.0-124.39.1.el10_1
  • 6.12.0-124.43.1.el10_1
  • 6.12.0-124.45.1.el10_1
  • 6.12.0-124.47.1.el10_1
  • 6.12.0-124.49.1.el10_1
  • 6.12.0-124.52.1.el10_1
  • 6.12.0-124.55.1.el10_1
  • 6.12.0-124.40.1.el10_1
  • 6.12.0-124.52.2.el10_1
  • 6.12.0-124.52.3.el10_1
  • 6.12.0-211.7.1.el10_2
  • 6.12.0-211.7.3.el10_2
  • 6.12.0-124.56.5.el10_1
  • 6.12.0-124.55.3.el10_1
  • 6.12.0-211.20.1.el10_2
  • 6.12.0-211.18.1.el10_2
  • 6.12.0-211.16.1.el10_2
  • 6.12.0-211.22.1.el10_2
  • 6.12.0-211.26.1.el10_2
  • 6.12.0-211.28.1.el10_2
  • 6.12.0-211.29.1.el10_2
  • 6.12.0-211.30.1.el10_2
  • 6.12.0-211.31.1.el10_2
  • 6.12.0-211.32.1.el10_2
  • 6.12.0-211.7.4.el10_2
  • 6.12.0-211.33.1.el10_2
  • 6.12.0-211.34.1.el10_2
  • 6.12.0-211.37.1.el10_2
  • 6.12.0-211.38.1.el10_2
  • 6.12.0-211.39.1.el10_2
  • 6.12.0-211.40.1.el10_2
  • 6.12.0-211.43.1.el10_2
  • 6.12.0-211.44.1.el10_2
  • 6.12.0-211.46.1.el10_2
  • 6.12.0-211.47.1.el10_2
  • 6.12.0-211.49.1.el10_2
Oracle Linux 10 In Rollout
47 kernels
  • 6.12.0-55.27.1.0.1.el10_0
  • 6.12.0-55.28.1.0.1.el10_0
  • 6.12.0-55.29.1.0.1.el10_0
  • 6.12.0-55.30.1.0.1.el10_0
  • 6.12.0-55.31.1.0.1.el10_0
  • 6.12.0-55.32.1.0.1.el10_0
  • 6.12.0-55.33.1.0.1.el10_0
  • 6.12.0-55.34.1.0.1.el10_0
  • 6.12.0-55.37.1.0.1.el10_0
  • 6.12.0-55.38.1.0.1.el10_0
  • 6.12.0-55.39.1.0.1.el10_0
  • 6.12.0-55.40.1.0.1.el10_0
  • 6.12.0-55.41.1.0.1.el10_0
  • 6.12.0-55.42.1.0.1.el10_0
  • 6.12.0-55.43.1.0.1.el10_0
  • 6.12.0-124.8.1.el10_1
  • 6.12.0-124.13.1.el10_1
  • 6.12.0-124.16.1.el10_1
  • 6.12.0-124.20.1.el10_1
  • 6.12.0-124.21.1.el10_1
  • 6.12.0-124.27.1.el10_1
  • 6.12.0-124.28.1.el10_1
  • 6.12.0-124.29.1.el10_1
  • 6.12.0-124.31.1.el10_1
  • 6.12.0-124.35.1.el10_1
  • 6.12.0-124.38.1.el10_1
  • 6.12.0-124.39.1.el10_1
  • 6.12.0-124.40.1.el10_1
  • 6.12.0-124.43.1.el10_1
  • 6.12.0-124.45.1.el10_1
  • 6.12.0-124.47.1.el10_1
  • 6.12.0-124.49.1.el10_1
  • 6.12.0-124.52.1.el10_1
  • 6.12.0-124.55.1.el10_1
  • 6.12.0-124.56.1.el10_1
  • 6.12.0-211.7.3.el10_2
  • 6.12.0-211.34.1.el10_2
  • 6.12.0-211.37.1.el10_2
  • 6.12.0-211.38.1.el10_2
  • 6.12.0-211.39.1.el10_2
  • 6.12.0-211.40.1.el10_2
  • 6.12.0-211.42.1.el10_2
  • 6.12.0-211.43.1.el10_2
  • 6.12.0-211.44.1.el10_2
  • 6.12.0-211.46.1.el10_2
  • 6.12.0-211.47.1.el10_2
  • 6.12.0-211.49.1.el10_2
RHEL 10 In Rollout
61 kernels
  • 6.12.0-55.27.1.el10_0
  • 6.12.0-55.28.1.el10_0
  • 6.12.0-55.29.1.el10_0
  • 6.12.0-55.30.1.el10_0
  • 6.12.0-55.31.1.el10_0
  • 6.12.0-55.32.1.el10_0
  • 6.12.0-55.33.1.el10_0
  • 6.12.0-55.34.1.el10_0
  • 6.12.0-55.37.1.el10_0
  • 6.12.0-55.38.1.el10_0
  • 6.12.0-55.39.1.el10_0
  • 6.12.0-55.40.1.el10_0
  • 6.12.0-55.41.1.el10_0
  • 6.12.0-55.42.1.el10_0
  • 6.12.0-55.43.1.el10_0
  • 6.12.0-124.9.1.el10_1
  • 6.12.0-124.8.1.el10_1
  • 6.12.0-124.11.1.el10_1
  • 6.12.0-124.13.1.el10_1
  • 6.12.0-124.16.1.el10_1
  • 6.12.0-124.20.1.el10_1
  • 6.12.0-124.21.1.el10_1
  • 6.12.0-124.27.1.el10_1
  • 6.12.0-124.28.1.el10_1
  • 6.12.0-124.29.1.el10_1
  • 6.12.0-124.31.1.el10_1
  • 6.12.0-124.35.1.el10_1
  • 6.12.0-124.38.1.el10_1
  • 6.12.0-124.39.1.el10_1
  • 6.12.0-124.43.1.el10_1
  • 6.12.0-124.45.1.el10_1
  • 6.12.0-124.47.1.el10_1
  • 6.12.0-124.49.1.el10_1
  • 6.12.0-124.52.1.el10_1
  • 6.12.0-124.55.1.el10_1
  • 6.12.0-124.56.1.el10_1
  • 6.12.0-211.16.1.el10_2
  • 6.12.0-211.7.1.el10_2
  • 6.12.0-211.7.3.el10_2
  • 6.12.0-124.40.1.el10_1
  • 6.12.0-211.18.1.el10_2
  • 6.12.0-211.20.1.el10_2
  • 6.12.0-211.22.1.el10_2
  • 6.12.0-211.26.1.el10_2
  • 6.12.0-211.28.1.el10_2
  • 6.12.0-211.29.1.el10_2
  • 6.12.0-211.30.1.el10_2
  • 6.12.0-211.31.1.el10_2
  • 6.12.0-211.32.1.el10_2
  • 6.12.0-211.33.1.el10_2
  • 6.12.0-211.34.1.el10_2
  • 6.12.0-211.37.1.el10_2
  • 6.12.0-211.38.1.el10_2
  • 6.12.0-211.39.1.el10_2
  • 6.12.0-211.40.1.el10_2
  • 6.12.0-211.42.1.el10_2
  • 6.12.0-211.43.1.el10_2
  • 6.12.0-211.44.1.el10_2
  • 6.12.0-211.46.1.el10_2
  • 6.12.0-211.47.1.el10_2
  • 6.12.0-211.49.1.el10_2
Rocky Linux 10 In Rollout
44 kernels
  • 6.12.0-55.27.1.el10_0
  • 6.12.0-55.29.1.el10_0
  • 6.12.0-55.30.1.el10_0
  • 6.12.0-55.32.1.el10_0
  • 6.12.0-55.34.1.el10_0
  • 6.12.0-55.37.1.el10_0
  • 6.12.0-55.39.1.el10_0
  • 6.12.0-55.40.1.el10_0
  • 6.12.0-55.41.1.el10_0
  • 6.12.0-124.8.1.el10_1
  • 6.12.0-124.13.1.el10_1
  • 6.12.0-124.16.1.el10_1
  • 6.12.0-124.20.1.el10_1
  • 6.12.0-124.21.1.el10_1
  • 6.12.0-124.27.1.el10_1
  • 6.12.0-124.28.1.el10_1
  • 6.12.0-124.29.1.el10_1
  • 6.12.0-124.31.1.el10_1
  • 6.12.0-124.35.1.el10_1
  • 6.12.0-124.38.1.el10_1
  • 6.12.0-124.45.1.el10_1
  • 6.12.0-124.47.1.el10_1
  • 6.12.0-124.49.1.el10_1
  • 6.12.0-124.52.1.el10_1
  • 6.12.0-124.55.1.el10_1
  • 6.12.0-124.56.1.el10_1
  • 6.12.0-124.40.1.el10_1
  • 6.12.0-211.18.1.el10_2
  • 6.12.0-211.22.1.el10_2
  • 6.12.0-211.26.1.el10_2
  • 6.12.0-211.28.1.el10_2
  • 6.12.0-211.32.1.el10_2
  • 6.12.0-211.16.1.el10_2.0.1
  • 6.12.0-211.33.1.el10_2
  • 6.12.0-211.34.1.el10_2
  • 6.12.0-211.37.1.el10_2
  • 6.12.0-211.39.1.el10_2
  • 6.12.0-211.40.1.el10_2
  • 6.12.0-211.42.1.el10_2
  • 6.12.0-211.43.1.el10_2
  • 6.12.0-211.44.1.el10_2
  • 6.12.0-211.46.1.el10_2
  • 6.12.0-211.47.1.el10_2
  • 6.12.0-211.49.1.el10_2