CVE-2026-90059 in Linuxinfo

Summary

by MITRE • 09/17/2026

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

net: stmmac: restore NET_IP_ALIGN in the RX DMA offset

Since the RX path was converted to zero-copy, the page pool page is handed to the stack directly as the skb head, and the offset the DMA engine writes at is what determines the alignment of the packet headers.

Before the conversion the payload was copied into an skb obtained from napi_alloc_skb(), which reserves NET_SKB_PAD + NET_IP_ALIGN. The conversion moved the headroom into stmmac_rx_offset() but did not carry over NET_IP_ALIGN, so on architectures where NET_IP_ALIGN is 2 the IP header now lands misaligned:

64 (NET_SKB_PAD) + 14 (ethernet) + 20 (IP) = 98

Same for the XDP branch:

256 (XDP_PACKET_HEADROOM) + 14 (ethernet) + 20 (IP) = 290

On ARM32 this is fatal, because ldm and ldrd trap on unaligned addresses even when CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is set.

Any received echo request panics the machine, e.g:

Unhandled fault: alignment exception (0x001) at 0x81873062 Internal error: : 1 [#1] SMP ARM
Hardware name: Altera SOCFPGA Arria10 PC is at icmp_echo+0x38/0xa8 LR is at icmp_rcv+0x22c/0x370 Call trace: icmp_echo from icmp_rcv+0x22c/0x370 icmp_rcv from ip_protocol_deliver_rcu+0x2c/0x224 ip_protocol_deliver_rcu from ip_local_deliver+0xc8/0x1a0 ip_local_deliver from ip_sublist_rcv_finish+0x3c/0x50 ip_sublist_rcv_finish from ip_list_rcv_finish+0x110/0x118 ip_list_rcv_finish from ip_list_rcv+0xc8/0xdc ip_list_rcv from __netif_receive_skb_list_core+0x170/0x1c0 ... napi_complete_done from stmmac_napi_poll_rx+0xcb0/0x1030 Code: e24dd068 e59020a0 e28dc010 e0822001 (e8920003) Kernel panic - not syncing: Fatal exception in interrupt

The faulting instruction is the ldm of *icmp_hdr(skb) in icmp_echo().

Fix by adding NET_IP_ALIGN back to the RX offset, which restores the alignment the stack used to get.

Note that commit a955318fe67e ("stmmac: align RX buffers") made a similar change in 2021 and was reverted by commit 12d125b4574b ("stmmac: Revert "stmmac: align RX buffers"") because it caused packet corruption. That patch raised the offset from 0 without adjusting the buffer size accounting, so the DMA engine could arguably write past the end of the RX buffers, though this was never root caused. Commit df542f669307 ("net: stmmac: Switch to zero-copy in non-XDP RX path") since derives the page pool allocation from stmmac_rx_offset(), so the extra bytes are accounted for.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Analysis

by VulDB Data Team • 09/17/2026

The Linux kernel driver for Synopsys DesignWare Ethernet MAC controllers, known as stmmac, contains a critical alignment vulnerability introduced during a transition to zero-copy receive path processing. This architectural change was intended to improve network performance by handing page pool pages directly to the networking stack as socket buffer heads rather than copying payloads into newly allocated skbs. However, this optimization inadvertently removed the NET_IP_ALIGN offset from the RX DMA configuration without accounting for its necessity on certain hardware architectures. The original code path utilized napi_alloc_skb which automatically reserves space including both NET_SKB_PAD and NET_IP_ALIGN to ensure proper alignment of network headers. When the driver switched to using stmmac_rx_offset() to determine headroom, it retained only the standard padding but omitted the additional two bytes required for IP header alignment on specific platforms like ARM32.

This omission results in misaligned memory access when processing incoming packets, particularly affecting architectures where NET_IP_ALIGN is defined as 2 bytes. The mathematical consequence of this error places the Internet Protocol header at an address that violates hardware alignment requirements. Specifically, the calculation shows that with sixty-four bytes for SKB padding and fourteen bytes for Ethernet headers plus twenty bytes for IP headers, the resulting offset becomes ninety-eight instead of one hundred. Similarly in XDP processing paths utilizing two hundred fifty-six bytes of headroom, the total reaches two hundred ninety rather than three hundred. On ARM32 systems equipped with processors that enforce strict alignment rules such as those found in Altera SOCFPGA Arria10 platforms these misaligned accesses trigger fatal hardware exceptions.

The operational impact is severe and immediate for any network traffic requiring IP header processing. When an echo request packet arrives the kernel attempts to execute instructions like ldm or ldrd on unaligned addresses despite configuration settings that theoretically support efficient unaligned access. This leads directly to alignment exception faults within interrupt handlers specifically during icmp_echo function execution which subsequently causes a complete system panic and halt. The call trace reveals the fault originates from attempting to load data structures at invalid memory boundaries, effectively rendering network connectivity unstable or completely non-functional on affected devices until the issue is resolved through kernel updates or manual patching of driver parameters.

From a vulnerability classification perspective this flaw aligns with CWE-120 Buffer Copy without Checking Size of Input in terms of improper buffer management leading to instability and CWE-479 Missing Signal Handler which manifests as unhandled exceptions causing denial of service conditions. In the context of MITRE ATT&CK framework it represents an availability impact where attackers could potentially induce system crashes via crafted network traffic although this specific instance appears more susceptible to accidental triggering by normal background noise rather than targeted exploitation due to its reliance on standard protocol stacks like ICMP. The root cause stems from incomplete porting of alignment logic during refactoring efforts aimed at performance optimization highlighting the importance of maintaining backward compatibility with hardware-specific constraints when modifying low-level driver code.

Mitigation strategies involve applying kernel patches that restore NET_IP_ALIGN within the stmmac_rx_offset function to re-establish correct memory boundaries for IP headers. Developers must ensure that any adjustments to RX buffer offsets are accompanied by corresponding updates to buffer size accounting mechanisms so DMA engines do not write beyond allocated memory regions as seen in previous reverted attempts at similar fixes. System administrators running affected kernels should monitor for alignment exception logs and prioritize updating their systems once official corrections become available through distribution repositories or upstream kernel releases. Long-term resolution requires rigorous testing across diverse hardware architectures during driver modifications to prevent regression of critical alignment properties essential for stable network operation on embedded and specialized computing platforms.

Responsible

Linux

Reservation

09/11/2026

Disclosure

09/17/2026

Moderation

accepted

CPE

ready

EPSS

0.00000

KEV

no

Activities

very low

Sources

Might our Artificial Intelligence support you?

Check our Alexa App!