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: 5.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability occurs when the Linux kernel attempts to free vmemmap pages using the pagetable_free() routine, which is intended for page tables. Because vmemmap pages are not compound pages the routine only frees the first page of each PMD-sized block, leaving the remaining pages allocated. This results in a kernel memory leak that can accumulate over time, depleting kernel memory and potentially destabilizing the system. The weakness is an improper use of built-in freeing functions, identified as CWE‑772. No remote code execution or privilege escalation is directly provided by the defect, but the memory leak can degrade system performance and reliability.

Affected Systems

Linux kernel releases that do not incorporate commit bf9e4e30f353 (“x86/mm: use pagetable_free()”) are affected. Distributions whose kernel packages lack this commit, or whose kernels are older than that commit, remain vulnerable until the patch is applied. Updated kernels that include the patch, or those that have received the corresponding security update, have the issue resolved.

Risk and Exploitability

With a CVSS score of 5.5, the vulnerability is regarded as moderate in severity. The EPSS score of less than 1% indicates a low probability of active exploitation, and the vulnerability is not listed in the CISA KEV catalog. The likely attack scenario requires an attacker to trigger the faulty freeing path through local or privileged kernel activity; no remote exploitation path is described in the advisory.

Generated by OpenCVE AI on September 4, 2026 at 00:51 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 distribution‑issued security updates that incorporate this patch
  • Enable kernel memory protection mechanisms (e.g., CONFIG_RANDOMIZE_MEMORY, CONFIG_PROTECT_KERNEL) and monitor for abnormal kernel memory usage

Generated by OpenCVE AI on September 4, 2026 at 00:51 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 03 Sep 2026 16:30:00 +0000

Type Values Removed Values Added
Weaknesses NVD-CWE-noinfo
Metrics cvssV3_1

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


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-08-17T04:53:00.389Z

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

Link: CVE-2026-64302

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Analyzed

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

Modified: 2026-09-03T16:11:53.503

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-09-04T01:00:14Z

Weaknesses