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

x86/mm: Fix freeing of PMD-sized vmemmap pages

Commit bf9e4e30f353 ("x86/mm: use pagetable_free()"), switched from
freeing non-boot page tables through __free_pages() to
pagetable_free().

However, the function is also called to free vmemmap pages.

Given that vmemmap pages are not page tables, already the page_ptdesc(page)
is wrong. But worse, pagetable_free() calls:

__free_pages(page, compound_order(page));

Since vmemmap pages are not compound pages (see vmemmap_alloc_block())
-- except for HVO, which doesn't apply here -- only first page of a
PMD-sized vmemmap page is freed, leaking the other ones.

Fix it by properly decoupling pagetable and vmemmap freeing.
free_pagetable() no longer has to mess with SECTION_INFO, as only the
vmemmap is marked like that in register_page_bootmem_memmap().

The indentation in remove_pmd_table() is messed up. Fix that while
touching it.

Bootmem info handling will soon be fixed up. For now, handle it
similar to free_pagetable(), just avoiding the ifdef.

[ dhansen: changelog munging. More imperative voice ]
Published: 2026-07-25
Score: n/a
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

In Linux kernels that did not yet incorporate the fix, an error in the freeing of vmemmap pages caused only the first page of each PMD‑sized block to be released. The remaining pages remained allocated, leaking kernel memory. The flaw stems from misusing pagetable_free() for pages that are neither page tables nor compound objects, which leads to incomplete cleanup. While the vulnerability does not provide a direct code‑execution vector, the persistent leak can degrade system stability and incrementally expose kernel memory contents, potentially aiding information‑disclosure or side‑channel attacks.

Affected Systems

All Linux kernel releases prior to the inclusion of commit bf9e4e30f353 ("x86/mm: use pagetable_free()") that contain the buggy vmemmap freeing logic. Exact patched versions are vendor‑specific, but any kernel lacking the commit is vulnerable.

Risk and Exploitability

The EPSS score is reported as less than 1% and the vulnerability is not listed in CISA’s KEV catalog, indicating a low probability of active exploitation. Without a CVSS score the severity cannot be quantified precisely, but the primary risk is a kernel‑memory leak that could compromise system reliability and potentially aid reverse‑engineering or information‑disclosure attacks. Attackers would need local or kernel‑level access to trigger the flawed free path, so the likely attack vector is local privilege escalation or exploitation of an ongoing vulnerability that causes a path through this code.

Generated by OpenCVE AI on August 4, 2026 at 14:46 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a version that contains commit bf9e4e30f353 or later
  • Apply any distribution‑issued security updates that include this kernel patch
  • Monitor your distribution’s advisory feeds for any additional recommendations regarding vmemmap handling

Generated by OpenCVE AI on August 4, 2026 at 14:46 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 03 Aug 2026 19:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-401

Thu, 30 Jul 2026 04:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-401

Thu, 30 Jul 2026 00:15:00 +0000


Sat, 25 Jul 2026 09:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: x86/mm: Fix freeing of PMD-sized vmemmap pages Commit bf9e4e30f353 ("x86/mm: use pagetable_free()"), switched from freeing non-boot page tables through __free_pages() to pagetable_free(). However, the function is also called to free vmemmap pages. Given that vmemmap pages are not page tables, already the page_ptdesc(page) is wrong. But worse, pagetable_free() calls: __free_pages(page, compound_order(page)); Since vmemmap pages are not compound pages (see vmemmap_alloc_block()) -- except for HVO, which doesn't apply here -- only first page of a PMD-sized vmemmap page is freed, leaking the other ones. Fix it by properly decoupling pagetable and vmemmap freeing. free_pagetable() no longer has to mess with SECTION_INFO, as only the vmemmap is marked like that in register_page_bootmem_memmap(). The indentation in remove_pmd_table() is messed up. Fix that while touching it. Bootmem info handling will soon be fixed up. For now, handle it similar to free_pagetable(), just avoiding the ifdef. [ dhansen: changelog munging. More imperative voice ]
Title x86/mm: Fix freeing of PMD-sized vmemmap pages
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-07-25T08:49:37.621Z

Reserved: 2026-07-19T15:36:31.779Z

Link: CVE-2026-64302

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-07-25T10:17:11.170

Modified: 2026-08-11T15:00:57.447

Link: CVE-2026-64302

cve-icon Redhat

Severity :

Publid Date: 2026-07-25T00:00:00Z

Links: CVE-2026-64302 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-04T15:00:13Z

Weaknesses
  • CWE-772

    Missing Release of Resource after Effective Lifetime