CVE-2026-72213

CVE-2026-72213

High · published August 15, 2026

CVSS v3.1
7.1
EPSS
0%
Percentile
5.3
In the wild
Unconfirmed
What it is

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

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

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.

The record
Technical detail
CVSS v3.1
7.1 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00164 · 5.3th percentile
Published
2026-08-15T10:21Z
References (5)
EPSS history
Timeline
  • 15 AUG 05:54Z
    mm/hugetlb: fix hugetlb cgroup rsvd charge/uncharge mismatch
    cvelistv5