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

mm: mglru: fix stale batch updates after memcg reparenting

The mglru page table walker batches per-generation size deltas in
walk->nr_pages while walking page tables without holding the lruvec lock.
The reset_batch_size() later folds those deltas into walk->lruvec under
the lruvec lock.

The page table walker can run concurrently with the memcg reparenting path
as follows:

CPU0 CPU1
==== ====

walk_mm
--> walk_page_range
--> update_batch_size
--> walk->nr_pages += delta

mem_cgroup_css_offline
--> memcg_reparent_objcgs
--> lock lruvec
lru_gen_reparent_memcg
--> reparent child folios to parent
unlock lruvec

lock lruvec
reset_batch_size
--> child lrugen->nr_pages += delta

This will trigger the following warning in lru_gen_exit_memcg():

VM_WARN_ON_ONCE(memchr_inv(lruvec->lrugen.nr_pages, 0,
sizeof(lruvec->lrugen.nr_pages)));

And the user-visible impact of underestimated nr_pages in MGLRU was
premature OOMs because MGLRU does not try to reclaim memory when nr_pages
reaches zero, but there are still more pages.

To fix it, make reset_batch_size() check CSS_DYING under RCU before
flushing the pending batch. A non-dying memcg keeps the original lruvec
stable against RCU-delayed offlining; a dying memcg redirects the deltas
to the first non-dying ancestor.
Published: 2026-08-28
Score: 5.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service (premature OOM)
Action: Patch Kernel
AI Analysis

Impact

An inconsistency in the Linux kernel’s memory‑group Least-Recently-Used (mglru) page table walker caused an under‑count of resident pages during concurrent memory‑cgroup (memcg) reparenting operations. The walker updates per‑generation deltas without locking the LRU vector; later, reset_batch_size() merges these deltas while holding the lock. When the memcg reparenting path proceeds concurrently, the merge can add the delta to a child’s lru_gen after the child has been marked dying, producing a stale batch update. The result is that the accounting for active pages under a memcg underestimates the true number of resident pages, which triggers premature memory‑allocation failures (OOM) because the kernel believes the group has no reclaimable pages yet it still holds many.

Affected Systems

All Linux kernel releases that contain the vulnerable mglru implementation are affected. No specific version range is provided, so any system running an unpatched kernel version may be susceptible. This includes all Linux distributions that ship the upstream Linux kernel.

Risk and Exploitability

The EPSS score of < 1% indicates a very low likelihood of exploitation. The CVSS score of 5.5 reflects moderate severity. Exploitation would require a specific race condition between a page table walk and a memcg reparenting operation, which is non‑trivial and does not require additional privileges beyond those normally granted to kernel code. The vulnerability is not listed in the CISA KEV catalog. Although the bug can trigger premature termination of processes, the likelihood of successful exploitation in the wild remains low.

Generated by OpenCVE AI on September 2, 2026 at 07:47 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update the Linux kernel to a version that includes the mglru bug fix commit (e.g., any release after the kernel commit that introduced the reset_batch_size() check for dying CSS).
  • If a kernel upgrade is not immediately possible, avoid or postpone memory‑cgroup reparenting operations until the patch is applied, as the race condition only occurs during dynamic reparenting.
  • After applying the update, monitor kernel logs for the VM_WARN_ON_ONCE warning related to lrugen->nr_pages and for out‑of‑memory events to verify the issue is resolved.

Generated by OpenCVE AI on September 2, 2026 at 07:47 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 02 Sep 2026 06:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362
CWE-682

Wed, 02 Sep 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-367
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.5, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Moderate


Fri, 28 Aug 2026 17:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362
CWE-682

Fri, 28 Aug 2026 14:15:00 +0000

Type Values Removed Values Added
First Time appeared Linux kernel
Vendors & Products Linux kernel

Fri, 28 Aug 2026 13:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-400

Fri, 28 Aug 2026 11:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-400

Fri, 28 Aug 2026 07:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: mm: mglru: fix stale batch updates after memcg reparenting The mglru page table walker batches per-generation size deltas in walk->nr_pages while walking page tables without holding the lruvec lock. The reset_batch_size() later folds those deltas into walk->lruvec under the lruvec lock. The page table walker can run concurrently with the memcg reparenting path as follows: CPU0 CPU1 ==== ==== walk_mm --> walk_page_range --> update_batch_size --> walk->nr_pages += delta mem_cgroup_css_offline --> memcg_reparent_objcgs --> lock lruvec lru_gen_reparent_memcg --> reparent child folios to parent unlock lruvec lock lruvec reset_batch_size --> child lrugen->nr_pages += delta This will trigger the following warning in lru_gen_exit_memcg(): VM_WARN_ON_ONCE(memchr_inv(lruvec->lrugen.nr_pages, 0, sizeof(lruvec->lrugen.nr_pages))); And the user-visible impact of underestimated nr_pages in MGLRU was premature OOMs because MGLRU does not try to reclaim memory when nr_pages reaches zero, but there are still more pages. To fix it, make reset_batch_size() check CSS_DYING under RCU before flushing the pending batch. A non-dying memcg keeps the original lruvec stable against RCU-delayed offlining; a dying memcg redirects the deltas to the first non-dying ancestor.
Title mm: mglru: fix stale batch updates after memcg reparenting
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Kernel Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-08-28T06:53:16.087Z

Reserved: 2026-08-26T14:34:25.788Z

Link: CVE-2026-80719

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-28T08:16:57.720

Modified: 2026-08-28T08:16:57.720

Link: CVE-2026-80719

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-08-28T00:00:00Z

Links: CVE-2026-80719 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-02T08:00:14Z

Weaknesses
  • CWE-367

    Time-of-check Time-of-use (TOCTOU) Race Condition