CVE-2026-72213 (GCVE-0-2026-72213)

Vulnerability from cvelistv5 – Published: 2026-08-15 05:54 – Updated: 2026-08-17 05:41
VLAI
Title
mm/hugetlb: fix hugetlb cgroup rsvd charge/uncharge mismatch
Summary
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.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 08cf9faf7558020aed6a0da5810b824b07139dfa , < 5c32ae4a91fb5f4941328e0c1720a7fa4189c3bd (git)
Affected: 08cf9faf7558020aed6a0da5810b824b07139dfa , < 1697d253f51cf5e3825a3423ff49e128a3502ab2 (git)
Affected: 08cf9faf7558020aed6a0da5810b824b07139dfa , < b785f2bd9496facedc0a031be09cddcd1d3c84d3 (git)
Affected: 08cf9faf7558020aed6a0da5810b824b07139dfa , < 15807d0ddde37407af72859426b654f3d1972b00 (git)
guessed Create a notification for this product.
Linux Linux Affected: 5.7
Unaffected: 0 , < 5.7 (semver)
Unaffected: 6.12.101 , ≤ 6.12.* (semver)
Unaffected: 6.18.40 , ≤ 6.18.* (semver)
Unaffected: 7.1.5 , ≤ 7.1.* (semver)
Unaffected: 7.2 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "mm/hugetlb.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "5c32ae4a91fb5f4941328e0c1720a7fa4189c3bd",
              "status": "affected",
              "version": "08cf9faf7558020aed6a0da5810b824b07139dfa",
              "versionType": "git"
            },
            {
              "lessThan": "1697d253f51cf5e3825a3423ff49e128a3502ab2",
              "status": "affected",
              "version": "08cf9faf7558020aed6a0da5810b824b07139dfa",
              "versionType": "git"
            },
            {
              "lessThan": "b785f2bd9496facedc0a031be09cddcd1d3c84d3",
              "status": "affected",
              "version": "08cf9faf7558020aed6a0da5810b824b07139dfa",
              "versionType": "git"
            },
            {
              "lessThan": "15807d0ddde37407af72859426b654f3d1972b00",
              "status": "affected",
              "version": "08cf9faf7558020aed6a0da5810b824b07139dfa",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "mm/hugetlb.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.7"
            },
            {
              "lessThan": "5.7",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.101",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.40",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.5",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.101",
                  "versionStartIncluding": "5.7",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.40",
                  "versionStartIncluding": "5.7",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.5",
                  "versionStartIncluding": "5.7",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "5.7",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmm/hugetlb: fix hugetlb cgroup rsvd charge/uncharge mismatch\n\nIn alloc_hugetlb_folio(), a single h_cg pointer is used for both the rsvd\nand non-rsvd hugetlb cgroup charges.  When map_chg is set,\nhugetlb_cgroup_charge_cgroup_rsvd() stores the charged cgroup in h_cg, but\nthe immediately following hugetlb_cgroup_charge_cgroup() overwrites h_cg\nwith the non-rsvd cgroup pointer.\n\nAs a result, hugetlb_cgroup_commit_charge_rsvd() stores the wrong\n(non-rsvd) cgroup pointer into the folio\u0027s rsvd slot.\n\nWhen the folio is later freed, free_huge_folio() unconditionally calls\nboth hugetlb_cgroup_uncharge_folio() and\nhugetlb_cgroup_uncharge_folio_rsvd().  The rsvd uncharge reads back the\nwrong cgroup from the folio and decrements a counter that was never\ncharged for that cgroup, causing a page_counter underflow:\n\n  page_counter underflow: -512 nr_pages=512\n  WARNING: mm/page_counter.c:61 at page_counter_cancel\n\nFix this by introducing a separate h_cg_rsvd pointer exclusively for the\nrsvd charge path, keeping the rsvd and non-rsvd charges fully independent\nthrough their charge, commit, and error uncharge paths."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.1,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - 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.\nAC:L - 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.\nPR:L - 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.\nUI:N - 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.\nS:U - 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.\nC:N - 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.\nI:H - 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.\nA:H - 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."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-17T05:41:39.361Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/5c32ae4a91fb5f4941328e0c1720a7fa4189c3bd"
        },
        {
          "url": "https://git.kernel.org/stable/c/1697d253f51cf5e3825a3423ff49e128a3502ab2"
        },
        {
          "url": "https://git.kernel.org/stable/c/b785f2bd9496facedc0a031be09cddcd1d3c84d3"
        },
        {
          "url": "https://git.kernel.org/stable/c/15807d0ddde37407af72859426b654f3d1972b00"
        }
      ],
      "title": "mm/hugetlb: fix hugetlb cgroup rsvd charge/uncharge mismatch",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-72213",
    "datePublished": "2026-08-15T05:54:07.854Z",
    "dateReserved": "2026-08-09T03:40:39.912Z",
    "dateUpdated": "2026-08-17T05:41:39.361Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-72213",
      "date": "2026-09-22",
      "epss": "0.00159",
      "percentile": "0.05525"
    },
    "microsoft_vex": {
      "current_release_date": "2026-08-23T15:00:42.000Z",
      "cve": "CVE-2026-72213",
      "id": "msrc_CVE-2026-72213",
      "initial_release_date": "2026-08-23T15:00:42.000Z",
      "product_status:known_not_affected": "1",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "mm/hugetlb: fix hugetlb cgroup rsvd charge/uncharge mismatch",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-72213.json",
      "version": "1"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "mm/hugetlb.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "5c32ae4a91fb5f4941328e0c1720a7fa4189c3bd",
                    "status": "affected",
                    "version": "08cf9faf7558020aed6a0da5810b824b07139dfa",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "1697d253f51cf5e3825a3423ff49e128a3502ab2",
                    "status": "affected",
                    "version": "08cf9faf7558020aed6a0da5810b824b07139dfa",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "b785f2bd9496facedc0a031be09cddcd1d3c84d3",
                    "status": "affected",
                    "version": "08cf9faf7558020aed6a0da5810b824b07139dfa",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "15807d0ddde37407af72859426b654f3d1972b00",
                    "status": "affected",
                    "version": "08cf9faf7558020aed6a0da5810b824b07139dfa",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "mm/hugetlb.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "5.7"
                  },
                  {
                    "lessThan": "5.7",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.101",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.40",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.1.*",
                    "status": "unaffected",
                    "version": "7.1.5",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.2",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmm/hugetlb: fix hugetlb cgroup rsvd charge/uncharge mismatch\n\nIn alloc_hugetlb_folio(), a single h_cg pointer is used for both the rsvd\nand non-rsvd hugetlb cgroup charges.  When map_chg is set,\nhugetlb_cgroup_charge_cgroup_rsvd() stores the charged cgroup in h_cg, but\nthe immediately following hugetlb_cgroup_charge_cgroup() overwrites h_cg\nwith the non-rsvd cgroup pointer.\n\nAs a result, hugetlb_cgroup_commit_charge_rsvd() stores the wrong\n(non-rsvd) cgroup pointer into the folio\u0027s rsvd slot.\n\nWhen the folio is later freed, free_huge_folio() unconditionally calls\nboth hugetlb_cgroup_uncharge_folio() and\nhugetlb_cgroup_uncharge_folio_rsvd().  The rsvd uncharge reads back the\nwrong cgroup from the folio and decrements a counter that was never\ncharged for that cgroup, causing a page_counter underflow:\n\n  page_counter underflow: -512 nr_pages=512\n  WARNING: mm/page_counter.c:61 at page_counter_cancel\n\nFix this by introducing a separate h_cg_rsvd pointer exclusively for the\nrsvd charge path, keeping the rsvd and non-rsvd charges fully independent\nthrough their charge, commit, and error uncharge paths."
          }
        ],
        "id": "CVE-2026-72213",
        "lastModified": "2026-08-17T06:18:22.243",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.1,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "NONE",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "impactScore": 5.2,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-08-15T06:21:40.013",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/15807d0ddde37407af72859426b654f3d1972b00"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/1697d253f51cf5e3825a3423ff49e128a3502ab2"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/5c32ae4a91fb5f4941328e0c1720a7fa4189c3bd"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/b785f2bd9496facedc0a031be09cddcd1d3c84d3"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-08-18T16:29:13+00:00",
      "cve": "CVE-2026-72213",
      "id": "CVE-2026-72213",
      "initial_release_date": "2026-08-15T00:00:00+00:00",
      "product_status:known_affected": "246",
      "product_status:known_not_affected": "28",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: mm/hugetlb: fix hugetlb cgroup rsvd charge/uncharge mismatch",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-72213.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-08-31T16:27:03Z",
      "cve": "CVE-2026-72213",
      "id": "CVE-2026-72213",
      "initial_release_date": "2026-08-31T16:27:03Z",
      "product_status:known_affected": "178",
      "product_status:known_not_affected": "184",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-72213",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-72213.json",
      "version": "2"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…