Description
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.
Published: 2026-08-15
Score: 7.1 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The Linux kernel hugetlb cgroup charge logic mistakenly reuses a single pointer for both reserved and non‑reserved charge paths, resulting in the commit routine storing the wrong cgroup reference in the reserved slot. When a folio is freed, the kernel attempts to uncharge that wrong reference, decrementing a counter that was never incremented and causing a page counter underflow. This corruption of kernel bookkeeping can lead to memory corruption or a denial‑of‑service condition.

Affected Systems

All Linux kernel releases that lack the commit identified by the references identified by the references in the advisory are affected. The flaw applies to any system using the hugetlb cgroup subsystem before the patch from the commit referenced in the advisory. No specific kernel version was enumerated, so the vulnerability is relevant to all current kernel releases prior to those commits.

Risk and Exploitability

The vulnerability has a CVSS score of 7.1, indicating high severity. It has an EPSS score of < 1%, indicating a very low exploitation probability, and is not listed in the KEV catalog. Exploiting the flaw would require manipulating hugetlb cgroup allocations, implying that local or privileged access is necessary. No publicly available exploits are known, but an attacker with sufficient privileges could trigger the mismatch to cause a page counter underflow and crash the kernel or lead to untrusted memory exposure.

Generated by OpenCVE AI on August 17, 2026 at 19:43 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply a kernel update that contains the commit fixing the hugetlb cgroup charge mismatch.
  • Reboot affected machines to ensure the patched kernel is active.
  • If immediate patching is not possible, consider disabling the hugetlb cgroup feature to prevent the counter underflow until the update is applied.

Generated by OpenCVE AI on August 17, 2026 at 19:43 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4745-1 linux-6.12 security update
History

Wed, 19 Aug 2026 00:15:00 +0000


Mon, 17 Aug 2026 20:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-191

Mon, 17 Aug 2026 18:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-190

Mon, 17 Aug 2026 06:00:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

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


Sat, 15 Aug 2026 19:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-190

Sat, 15 Aug 2026 06:00:00 +0000

Type Values Removed Values Added
Description 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.
Title mm/hugetlb: fix hugetlb cgroup rsvd charge/uncharge mismatch
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-08-17T05:41:39.361Z

Reserved: 2026-08-09T03:40:39.912Z

Link: CVE-2026-72213

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-15T06:21:40.013

Modified: 2026-08-17T06:18:22.243

Link: CVE-2026-72213

cve-icon Redhat

Severity : Moderate

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

Links: CVE-2026-72213 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-17T19:45:04Z

Weaknesses
  • CWE-191

    Integer Underflow (Wrap or Wraparound)