← CVE Intelligence

CVE-2026-53153

mm/list_lru: drain before clearing xarray entry on reparent PUBLISHED

Description (CNA)

In the Linux kernel, the following vulnerability has been resolved: mm/list_lru: drain before clearing xarray entry on reparent memcg_reparent_list_lrus() clears the dying memcg's xarray entry with xas_store(&xas, NULL) before reparenting its per-node lists into the parent. This opens a window where a concurrent list_lru_del() arriving for the dying memcg sees xa_load() == NULL, walks to the parent in lock_list_lru_of_memcg(), takes the parent's per-node lock, and calls list_del_init() on an item still physically linked on the dying memcg's list. If another in-flight thread holds the dying memcg's per-node lock at the same moment (another list_lru_del, or a list_lru_walk_one running an isolate callback), both threads modify ->next/->prev pointers on the same physical list under different locks. Adjacent items can corrupt each other's links. Fix it by reversing the order: reparent each per-node list and mark the child's list lru dead and then clear the xarray entry. Any concurrent list_lru op that finds the still-set xarray entry either takes the dying memcg's per-node lock (synchronizing with the drain) or sees LONG_MIN and walks to the parent, where the items now live.

Affected (CNA)

Vendor / productVersions
Linux / Linuxaffected fb56fdf8b9a2f7397f8a83dce50189f3f0cf71af before c19ff4351214f059349788e13e70e74325831ff6; affected fb56fdf8b9a2f7397f8a83dce50189f3f0cf71af before 2b66496d794e98f7aeec7688573051f22ec40bac; affected fb56fdf8b9a2f7397f8a83dce50189f3f0cf71af before 98733f3f0becb1ae0701d021c1748e974e5fa55c
Linux / Linuxaffected 6.13; unaffected 0 before 6.13; unaffected 6.18.36 through 6.18.*; unaffected 7.0.13 through 7.0.*; unaffected 7.1 through *

CWE

No CWE identifiers supplied.

References

ADP enrichment

redhat-SADP

A flaw was found in the Linux kernel's memory cgroup (memcg) list_lru component. A race condition occurs during the reparenting of list_lru entries when an xarray entry is cleared before its associated lists are fully reparented. This allows concurrent operations to modify list pointers under different locks, leading to memory corruption. This corruption can result in system instability or a denial of service (DoS).