CVE-2026-64302

Source
https://cve.org/CVERecord?id=CVE-2026-64302
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-64302.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-64302
Downstream
Published
2026-07-25T08:49:37.621Z
Modified
2026-07-27T04:03:21.141991365Z
Summary
x86/mm: Fix freeing of PMD-sized vmemmap pages
Details

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 __freepages() to pagetablefree().

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

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

__free_pages(page, compound_order(page));

Since vmemmap pages are not compound pages (see vmemmapallocblock()) -- 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. freepagetable() no longer has to mess with SECTIONINFO, as only the vmemmap is marked like that in registerpagebootmem_memmap().

The indentation in removepmdtable() 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 ]

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/64xxx/CVE-2026-64302.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
a1593c90896babf33e947910c7aecb9f50bab993
Fixed
add1e4112e00b619614784bf630aeebfdefa23e1
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
bf9e4e30f3538391745a99bc2268ec4f5e4a401e
Fixed
03f6ecbc446c33b38fd452cd3c494092a8116967
Fixed
39406c05f8f150f1685839acd38ffdd69ff92031
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
6.18.7
Fixed
6.18.39

Affected versions

v6.*
v6.18.10
v6.18.11
v6.18.12
v6.18.13
v6.18.14
v6.18.15
v6.18.16
v6.18.17
v6.18.18
v6.18.19
v6.18.20
v6.18.21
v6.18.22
v6.18.23
v6.18.24
v6.18.25
v6.18.26
v6.18.27
v6.18.28
v6.18.29
v6.18.30
v6.18.31
v6.18.32
v6.18.33
v6.18.34
v6.18.35
v6.18.36
v6.18.37
v6.18.38
v6.18.7
v6.18.8
v6.18.9

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-64302.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
6.18.39
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
7.1.4

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-64302.json"