Skip to main content

Linux Kernel CVE-2026-64149

| EUVDEUVD-2026-45834 MEDIUM
2026-07-19 Linux GHSA-pxq7-6qx3-6gp9
5.5
CVSS 3.1 · NVD
Share

Severity by source

NVD PRIMARY
5.5 MEDIUM
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
vuln.today AI
5.5 MEDIUM

Local trigger via kernel driver probe on specific ARM64 hardware; no confidentiality or integrity impact; availability degraded by DMA mapping failure rendering the peripheral unusable.

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

Primary rating from NVD.

CVSS VectorNVD

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

Lifecycle Timeline

5
Analysis Generated
Aug 17, 2026 - 19:46 vuln.today
CVSS changed
Aug 17, 2026 - 17:37 NVD
5.5 (MEDIUM)
Patch available
Jul 19, 2026 - 17:03 EUVD
CVE Published
Jul 19, 2026 - 15:40 nvd
MEDIUM 5.5
CVE Published
Jul 19, 2026 - 15:40 cve.org
UNKNOWN (no severity yet)

DescriptionNVD

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

dma-mapping: move dma_map_resource() sanity check into debug code

dma_map_resource() uses pfn_valid() to ensure the range is not RAM. However, pfn_valid() only checks for availability of the memory map for a PFN but it does not ensure that the PFN is actually backed by RAM. On ARM64 with SPARSEMEM (128MB section granularity), MMIO addresses that share a section with RAM will falsely trigger the WARN_ON_ONCE and cause dma_map_resource() to return DMA_MAPPING_ERROR.

This causes a WARNING on Raspberry Pi 4 during spi_bcm2835 probe because the SPI FIFO register (0xfe204004) falls in the same sparsemem section as the end of RAM (0xf8000000-0xfbffffff), both in section 31 (0xf8000000-0xffffffff).

Move the sanity check from dma_map_resource() into debug_dma_map_phys() and replace the unreliable pfn_valid() with pfn_valid() && !PageReserved(), which correctly identifies actual usable RAM without false positives for MMIO regions that happen to have struct pages.

Since dma_map_resource() is dma_map_phys(DMA_ATTR_MMIO), the check applies equally to both APIs. Any non-reserved page represents kernel memory to a sufficient degree that using DMA_ATTR_MMIO on it is almost certainly wrong and risks breaking coherency on non-coherent platforms. ZONE_DEVICE pages used for PCI P2P DMA (MEMORY_DEVICE_PCI_P2PDMA) have PageReserved set, so they will not trigger a false positive.

The check no longer blocks the mapping and uses err_printk() to integrate with dma-debug filtering.

AnalysisAI

DMA mapping failures in the Linux kernel's dma-mapping subsystem crash device driver probes on ARM64 systems with SPARSEMEM due to an incorrect pfn_valid() precondition check in dma_map_resource(). On Raspberry Pi 4 and similar ARM64/SPARSEMEM platforms, MMIO registers whose physical addresses share a 128MB sparsemem section with RAM are misidentified as RAM, causing WARN_ON_ONCE to fire and dma_map_resource() to return DMA_MAPPING_ERROR, breaking peripheral initialization (e.g., spi_bcm2835 SPI controller). No public exploit identified at time of analysis; this is a functional kernel regression with local availability impact rather than a remotely exploitable security flaw.

Technical ContextAI

The affected code is in the Linux kernel's dma-mapping layer (dma_map_resource()), which calls pfn_valid() to gate MMIO mapping - intending to reject RAM addresses. On ARM64 with CONFIG_SPARSEMEM, memory is managed in 128MB sections; if any RAM exists in a section, struct pages are allocated for the entire section including non-RAM MMIO addresses within it. pfn_valid() returns true for those MMIO addresses because struct pages exist, even though the address is not backed by usable RAM. The fix replaces the check with pfn_valid() && !PageReserved(), since actual usable RAM pages are not reserved while MMIO-mapped struct pages are. ZONE_DEVICE pages used for PCI P2P DMA (MEMORY_DEVICE_PCI_P2PDMA) have PageReserved set and correctly bypass the check. The CWE is unassigned, but this is fundamentally an incorrect precondition/invariant check - a logic error in distinguishing memory types. CPE: cpe:2.3:a:linux:linux:*:*:*:*:*:*:*:*.

RemediationAI

The primary fix is to upgrade to Linux kernel 6.18.34, 7.0.11, or 7.1 (mainline), which incorporate the corrected dma_map_resource() sanity check. Patch commits are available directly at the kernel stable tree: https://git.kernel.org/stable/c/181e67bc11c5ec5b87c6c512c2078752b23ca8d4, https://git.kernel.org/stable/c/004a777879ff629f6e0ca3d09ad09fa3452bcc4d, and https://git.kernel.org/stable/c/af0c3f05866237f7592219bfe05387bc3bfc99b5. Ubuntu users should apply USN-8593-1 (https://ubuntu.com/security/notices/USN-8593-1). If an immediate kernel upgrade is not feasible on Raspberry Pi 4 or equivalent ARM64/SPARSEMEM systems, a targeted workaround is to blacklist the specific driver triggering the failure - for example, adding 'blacklist spi_bcm2835' to /etc/modprobe.d/blacklist.conf - at the trade-off of losing SPI controller functionality. No generic network-level mitigations apply, as this is a local kernel initialization path.

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

CVE-2026-64149 vulnerability details – vuln.today

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