Skip to main content

Linux Kernel EUVDEUVD-2026-45866

| CVE-2026-64181 HIGH
2026-07-19 Linux GHSA-jx9m-72fr-5v84
7.8
CVSS 3.1 · Vendor: Linux
Share

Severity by source

Vendor (Linux) PRIMARY
7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
5.3 MEDIUM

Local trigger with a narrow 32-bit+THP precondition (AC:H, PR:L); impact is primarily availability from kernel instability with minor info exposure, so C:L/I:N/A:H.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:H
4.0 AV:L/AC:H/AT:P/PR:L/UI:N/VC:L/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE
5.5 MEDIUM
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Red Hat
5.5 MEDIUM
qualitative

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

5
Analysis Generated
Jul 20, 2026 - 17:51 vuln.today
CVSS changed
Jul 20, 2026 - 15:22 NVD
7.8 (HIGH)
Patch available
Jul 19, 2026 - 17:03 EUVD
CVE Published
Jul 19, 2026 - 15:41 cve.org
UNKNOWN (no severity yet)
CVE Published
Jul 19, 2026 - 15:41 cve.org
HIGH 7.8

DescriptionCVE.org

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

mm: fix __vm_normal_page() to handle missing support for pmd_special()/pud_special()

On x86 32-bit with THP enabled, zap_huge_pmd() is seen to generate a "WARNING: mm/memory.c:735 at __vm_normal_page+0x6a/0x7d", from the VM_WARN_ON_ONCE(is_zero_pfn(pfn) || is_huge_zero_pfn(pfn)); followed by "BUG: Bad rss-counter state"s, then later "BUG: Bad page state"s when reclaim gets to call shrink_huge_zero_folio_scan().

It's as if the _PAGE_SPECIAL bit never got set in the huge_zero pmd: and indeed, whereas pte_special() and pte_mkspecial() are subject to a dedicated CONFIG_ARCH_HAS_PTE_SPECIAL, pmd_special() and pmd_mkspecial() are subject to CONFIG_ARCH_SUPPORTS_PMD_PFNMAP, which is never enabled on any 32-bit architecture.

While the problem was exposed through commit d80a9cb1a64a ("mm/huge_memory: add and use normal_or_softleaf_folio_pmd()"), it was an oversight in commit af38538801c6 ("mm/memory: factor out common code from vm_normal_page_*()") and would result in other problems:

  • huge zero folio accounted in smaps, pagemap (PAGE_IS_FILE) and

numamaps as file-backed THP

  • folio_walk_start() returning the folio even without FW_ZEROPAGE set.

Callers seem to tolerate that, though.

... and triggering the VM_WARN_ON_ONE(), although never reported so far.

To fix it, teach vm_normal_page_pmd()/vm_normal_page_pud() to consider whether pmd_special/pud_special is actually implemented.

AnalysisAI

Memory-management corruption in the Linux kernel (introduced in 6.18) affects x86 32-bit systems with Transparent Huge Pages (THP) enabled, where __vm_normal_page() fails to recognize the huge zero PMD because pmd_special()/pud_special() are gated behind CONFIG_ARCH_SUPPORTS_PMD_PFNMAP, which is never set on any 32-bit architecture. A local user allocating THP mappings can trigger VM_WARN warnings, bad rss-counter and bad page state conditions, and mis-accounting of the huge zero folio as file-backed THP. No public exploit has been identified and EPSS is low (0.16%), consistent with a niche, non-default trigger condition.

Technical ContextAI

The flaw lives in the kernel's core virtual memory subsystem (mm/memory.c), specifically the common helper vm_normal_page_pmd()/vm_normal_page_pud() that decides whether a page-table entry maps a 'normal' folio. On architectures supporting PMD/PUD PFN mappings a special bit (_PAGE_SPECIAL) marks the huge zero page so it is excluded from normal-folio handling. Unlike the PTE path, which uses CONFIG_ARCH_HAS_PTE_SPECIAL, the PMD/PUD special helpers depend on CONFIG_ARCH_SUPPORTS_PMD_PFNMAP - a symbol never enabled on 32-bit builds - so pmd_mkspecial() is effectively a no-op and the huge zero PMD is treated as a normal folio. The regression was exposed by commit d80a9cb1a64a but rooted in refactor af38538801c6 that factored out common code from vm_normal_page_*(). CWE is unassigned by the source, but the behavior class is an incorrect check / logic error leading to state corruption and mis-accounting.

RemediationAI

Vendor-released patch: update to Linux 6.18.34, 7.0.11, or 7.1 (or later), which teach vm_normal_page_pmd()/vm_normal_page_pud() to check whether pmd_special()/pud_special() are actually implemented; the upstream fixes are at https://git.kernel.org/stable/c/62153767e8fc3889bc6508e9ffe927aaf64c4334, https://git.kernel.org/stable/c/9052ea2ee2233be5d4786b8909151ca2bfbedf99, and https://git.kernel.org/stable/c/c0c6ccd9828c3a1950623b546fa57292a77b5c73. If patching is not immediate, the most direct compensating control is to disable Transparent Huge Pages (echo never > /sys/kernel/mm/transparent_hugepage/enabled), which removes the trigger at the cost of THP performance benefits for large-memory workloads; alternatively, migrating affected hosts off 32-bit kernels to a 64-bit build (where CONFIG_ARCH_SUPPORTS_PMD_PFNMAP applies) also avoids the defect. Because exploitation requires local access, restricting untrusted local users on affected 32-bit hosts further reduces exposure.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 16.0 Not-Affected

Share

EUVD-2026-45866 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy