Database/Kernel, userspace & hypervisor
Linux kernel MGLRU: stale batch updates after memcg reparenting cause premature OOM kills
Impact
The MGLRU page-table walker accumulates per-generation page deltas without the lruvec lock and folds them in later. If a memory cgroup is reparented (offlined) in between, the deltas land on the dying child's lruvec, so the surviving cgroup's nr_pages is undercounted. MGLRU stops reclaiming once its counter hits zero even though reclaimable pages remain, so the kernel OOM-kills processes on a node that still has memory. On a GPU node this is felt as training or inference pods being OOM-killed under normal churn: every pod teardown offlines a memcg, so the racing condition recurs continuously on a busy multi-tenant node, and the kill lands on whichever workload was resident, not the one that caused it. There is no cross-tenant data exposure here - the cost is availability and wasted GPU-hours on restarted jobs.
Who can reach it
No attacker required and no authentication involved - this is a race between normal kernel paths. Any workload that creates and destroys cgroups (i.e. any container churn on the node) can trigger it on kernels with MGLRU (lru_gen) enabled. Not reachable remotely and not usable to cross a tenant boundary.
What to do
Take the fix from the stable kernel commits and reboot each node; the change is in core mm and cannot be hot-patched or applied by restarting a daemon. Nodes must be drained before reboot, which on a GPU fleet means evicting long-running training jobs. As an interim mitigation on kernels where MGLRU is optional, disabling multi-gen LRU (echo 0 > /sys/kernel/mm/lru_gen/enabled) removes the affected code path, at the cost of reverting to the legacy reclaim behaviour. The record lists stable commits but no fixed release numbers - check your distribution's advisory for the version that carries them.
References
Related entries
- Linux kernel KVM x86 MMU: invalid parent role propagates to child shadow pages, use-after-freeCVE-2026-80726 · Linux kernel KVM x86 shadow MMU (child shadow page role derivation)Unscored
- Linux kernel x86/mce: CMCI discovery kicks the MCE polling timer before it is initializedCVE-2026-80727 · Linux kernel x86 MCE (CMCI discovery vs. polling timer initialization order)Unscored
- Linux kernel mm: folio split leaves memcg-charged page-cache xa_nodes off the shadow_nodes list_lruCVE-2026-80729 · Linux kernel mm/huge_memory (page-cache folio split, shadow_nodes list_lru accounting)Unscored
- Linux nvmet-tcp: remote initiator can trip a kernel WARN via an oversized SGL, killing panic-on-warn hostsCVE-2026-80788 · Linux kernel nvmet-tcp (NVMe-over-TCP target SGL allocation)Unscored
- Linux kernel nvmet-tcp: unbounded kernel allocation from an unauthenticated NVMe/TCP peerCVE-2026-80789 · Linux kernel nvmet-tcp (NVMe/TCP target SGL length validation)Unscored
- Linux kernel nvmet-auth: uninitialized slab sent to a remote initiator during NVMe-oF authenticationCVE-2026-80791 · Linux kernel nvmet-auth (DH-HMAC-CHAP AUTH_RECEIVE response buffer)Unscored
This entry is curated: imported from vendor advisories with machine assistance, not yet individually verified. Confirm against your vendor's advisory before acting, and report anything wrong.