Vulnerability · Published Sep 17, 2026 · Assigned by Linux

CVE-2026-93197memcg: move LRU size accounting on reparenting instead of copying it

Unrated

In plain English

A security flaw in Linux from Linux. There are no confirmed reports of exploitation so far. The chance it is exploited in the next 30 days is estimated at 0.2% (higher than 10% of all known vulnerabilities). Fixed versions are available - upgrade the affected package.

Severity (CVSS )–Not rated
Exploit odds (30 days)0.2%top 90.4% of all CVEs
Exploited in the wildNo reportsnot in CISA KEV
Attack toolingNoneno public tooling known

Official description

In the Linux kernel, the following vulnerability has been resolved: memcg: move LRU size accounting on reparenting instead of copying it When a memory cgroup is offlined its LRU folios are reparented to the parent. lruvec_reparent_lru() splices the child's lists into the parent's and credits the parent with the child's per-zone lru_zone_size[], but never clears the child's copy, so the size is copied rather than moved. lru_gen_reparent_memcg() does the same for MGLRU. The parent is left correct, credited with exactly the folios it took over. The stale value sits on the child and nothing will correct it: folio->memcg_data now resolves to the parent, so every later update_lru_size() for those folios goes there. Dying cgroups are not freed immediately and mem_cgroup_iter() still walks them, so shrink_lruvec() keeps being called on them. get_scan_count() reads the phantom counter through lruvec_lru_size() and the scan loop then grinds through nr[] in SWAP_CLUSTER_MAX steps against an empty list, for as long as the dead cgroup lives. Under MGLRU the MGLRU scanner runs instead, but count_shadow_nodes() sums all of NR_LRU_LISTS through lruvec_lru_size() and over-budgets the shadow node limit just the same. On one 251 GiB host a sweep of every mz->lru_zone_size[] found 380 counters describing folios on no list at all: 124777314 pages, 476 GiB, 1.89x the machine's RAM, across 57 cgroups. All were on memcgs with CSS_DYING set and CSS_ONLINE clear, and parent/child pairs reported byte-identical sizes. LRU_UNEVICTABLE needs its size moved too. Its list is deliberately not spliced because lruvec_init() poisons the head - the unevictable LRU is imaginary and folios are never threaded on it - but the size is kept by lruvec_add_folio()/lruvec_del_folio() and those folios account to the parent from here on. This depends on commit bf4ade7dbd76 ("memcg: keep folio's objcg same as its node") and must not be backported ahead of it. Without that invariant a folio's objcg can belong to another node, so a folio already spliced onto the parent's list can still resolve to the child's lruvec until the objcg's node is reparented in a later iteration of memcg_reparent_objcgs(); clearing the child's counter early then lets lruvec_del_folio() underflow it and trip the WARN_ONCE()/VM_BUG_ON() in mem_cgroup_update_lru_size().

Affected packages & fixed versions

EcosystemPackageFixed inAdvisory
Debian:14linux7.2.6-1DEBIAN-CVE-2026-93197
Ubuntu:22.04:LTSlinux-allwinner-5.19no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-aws-5.19no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-aws-6.14no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-aws-6.17no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-aws-6.2no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-aws-6.5no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-azure-5.19no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-azure-6.11no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-azure-6.14no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-azure-6.17no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-azure-6.2no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-azure-6.5no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-azure-fde-5.19no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-azure-fde-6.14no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-azure-fde-6.17no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-azure-fde-6.2no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-azure-nvidia-6.14no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-gcp-5.19no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-gcp-6.11no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-gcp-6.14no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-gcp-6.17no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-gcp-6.2no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-gcp-6.5no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-hwe-5.19no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-hwe-6.11no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-hwe-6.14no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-hwe-6.2no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-hwe-6.5no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-intel-iot-realtimeno fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-lowlatency-hwe-5.19no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-lowlatency-hwe-6.11no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.2no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.5no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-nvidia-6.11no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-nvidia-6.17no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-nvidia-6.2no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-nvidia-6.5no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-oem-5.17no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-oem-6.0no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-oem-6.1no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-oem-6.11no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-oem-6.14no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-oem-6.5no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-oem-6.8no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-oracle-6.14no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-oracle-6.17no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-oracle-6.5no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-raspi-realtimeno fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-realtimeno fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-realtimeno fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-riscvno fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-riscvno fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-riscv-5.19no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-riscv-6.14no fix listedUBUNTU-CVE-2026-93197
Ubuntu:24.04:LTSlinux-riscv-6.17no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-riscv-6.5no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-starfive-5.19no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-starfive-6.2no fix listedUBUNTU-CVE-2026-93197
Ubuntu:22.04:LTSlinux-starfive-6.5no fix listedUBUNTU-CVE-2026-93197

Affected products (as reported)

VendorProductVersions
Linux Linux 07a6e9a2c199fed361f528781284d56771d0016f – before 007bc1842317bb99f5f6205afede940f951674c207a6e9a2c199fed361f528781284d56771d0016f – before 0e0ac326c511d514817cc7b6d7741afd59098ce2
Linux Linux 7.1

References