data built 2026-10-19T13:16:53Z

Look up another CVE · open CVE-2026-72213 in the interactive tracker

CVE-2026-72213

mm/hugetlb: fix hugetlb cgroup rsvd charge/uncharge mismatch

7.1 EPSS 0.2% AV:L

Published 2026-08-15 (2 months ago) by the Linux kernel CNA. Subsystem mm. Debian urgency: not yet assigned.

What to do, per Debian release

Debian's own status for CVE-2026-72213 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source

ReleaseStatus VersionWhat this means
Debian 12bookwormvulnerable6.1.190-1No fix published anywhere yet, neither in Debian nor upstream for the series bookworm tracks. Watch the Debian tracker page for this CVE. Advisories for bookworm have historically landed a median of 23 days after publication.
Debian 13trixiefixed6.12.101-1Update the kernel and reboot. Fixed in 6.12.101-1. A running kernel keeps the old code until the machine restarts.
Debian 14forkyfixed7.1.5-1Update the kernel and reboot. Fixed in 7.1.5-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.1.5-1Update the kernel and reboot. Fixed in 7.1.5-1. A running kernel keeps the old code until the machine restarts.
Debian 12bookworm · linux-6.12fixedDLA-4745-1 · 2026-08-18 · text6.12.101-1~deb12u1Update the kernel and reboot. DLA-4745-1 shipped the fix on 2026-08-18, in 6.12.101-1~deb12u1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

In alloc_hugetlb_folio(), a single h_cg pointer is used for both the rsvd and non-rsvd hugetlb cgroup charges. When map_chg is set, hugetlb_cgroup_charge_cgroup_rsvd() stores the charged cgroup in h_cg, but the immediately following hugetlb_cgroup_charge_cgroup() overwrites h_cg with the non-rsvd cgroup pointer. As a result, hugetlb_cgroup_commit_charge_rsvd() stores the wrong (non-rsvd) cgroup pointer into the folio's rsvd slot. When the folio is later freed, free_huge_folio() unconditionally calls both hugetlb_cgroup_uncharge_folio() and hugetlb_cgroup_uncharge_folio_rsvd(). The rsvd uncharge reads back the wrong cgroup from the folio and decrements a counter that was never charged for that cgroup, causing a page_counter underflow: page_counter underflow: -512 nr_pages=512 WARNING: mm/page_counter.c:61 at page_counter_cancel Fix this by introducing a separate h_cg_rsvd pointer exclusively for the rsvd charge path, keeping the rsvd and non-rsvd charges fully independent through their charge, commit, and error uncharge paths.

Where it lives

The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.

mm/hugetlb.c

What this is
HUGETLB SUBSYSTEMMAINTAINERS section matched on mm/hugetlb.c · linux-mm@kvack.org · Maintained

Check it on the machine

grep -w CONFIG_HUGETLBFS /boot/config-$(uname -r)

Reads the booted kernel's own configuration, on the machine and nowhere else. =y is built in, =m is a module, and an is not set line means the code is not there.

Show whether Debian builds this, per release

Debian builds this, but not on every flavour. At least one release below builds the code on some of its kernel flavours and not on others, so the answer depends on the architecture and flavour installed.

  • bookwormYnot built on armhf/armmp, armhf/rt/armmp
  • trixieYnot built on armel/rpi, armhf/armmp, armhf/rt/armmp
  • forky, sidYnot built on armhf/armmp
  • bookworm · linux-6.12Ynot built on armhf/armmp, armhf/rt/armmp
Y
built in where it is built at all; some flavours do not build it
Build switch
CONFIG_HUGETLBFS

From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS kbuild Makefiles Debian linux-config packages

Signals

Published
2026-08-15 (2 months ago)source
CVSS
7.1 high
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:Hsource recompute it
Attack vector
local (AV:L)source
EPSS
0.16%, higher than 5.2% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
not yet assignedsource
Subsystem
mm

Upstream fixes

The versions the CNA records as introducing and fixing this, and the commit for each. source

IntroducedFixed inCommit
5.76.12.1015c32ae4a91fb
5.76.18.401697d253f51c
5.77.1.5b785f2bd9496
5.77.215807d0ddde3

Debian advisories

AdvisoryDateShipped toDebian
DLA-4745-12026-08-18bookworm 6.12.101-1~deb12u1tracker

Why the CNA scored it this way

Quoted from the kernel CNA's own scoring file, word for word. A highlighted metric carries the most severe value CVSS v3.1 defines for it, which is what pushes the score up. source

AV:LAttack vector, local
The bug is in alloc_hugetlb_folio()/free_huge_folio() and is reached only via local MM paths (mmap/munmap, hugetlb page faults, fallocate, memfd MFD_HUGETLB, MAP_HUGETLB) that syzbot triggered through hugetlbfs inode eviction, not via any network-facing kernel service.
AC:LAttack complexity, low
An unprivileged attacker can reliably trigger the mismatch by creating hugetlbfs mappings without reservations (MAP_NORESERVE or fault-before-reserve), faulting in huge pages to run alloc_hugetlb_folio() with map_chg set, then closing/unmapping to free folios and hit the bad rsvd uncharge.
PR:LPrivileges required, low
Triggering requires only an unprivileged local process that can use hugetlb memory (hugetlbfs/MAP_HUGETLB/memfd) under a hugetlb cgroup; no init-namespace root or special driver capabilities are needed, and cgroup hugetlb limits are controllable from user namespaces.
UI:NUser interaction, none
Exploitation is fully attacker-driven through normal syscalls (mmap, write/fault, close/unlink) and does not require any victim user action beyond the attacker operating on their own mappings.
S:UScope, unchanged
Impact is confined to kernel hugetlb/cgroup page_counter accounting within the same host kernel security domain; it does not cross VM, container runtime, or IOMMU boundaries.
C:NConfidentiality impact, none
The flaw corrupts hugetlb cgroup reservation counters and emits a WARN on underflow; it does not read or disclose kernel memory, pointers, or other confidential data to the attacker.
I:HIntegrity impact, high
page_counter underflow forcibly resets hugetlb cgroup reservation usage to zero, corrupting kernel accounting so an attacker can bypass hugetlb.rsvd cgroup limits and consume hugepage resources beyond enforced quotas in multi-tenant/container deployments.
A:HAvailability impact, high
free_huge_folio() unconditionally hits the bad rsvd uncharge and triggers a kernel WARNING/page_counter underflow during hugepage teardown; syzbot classified this as DoS and repeated alloc/free cycles can disrupt hugetlb availability for other workloads when limits are bypassed.