CVE-2026-23316: net: ipv4: fix ARM64 alignment fault in multipath hash seed
In the Linux kernel, the following vulnerability has been resolved:
net: ipv4: fix ARM64 alignment fault in multipath hash seed
struct sysctlfibmultipathhashseed contains two u32 fields (userseed and mpseed), making it an 8-byte structure with a 4-byte alignment requirement.
In fibmultipathhashfromkeys(), the code evaluates the entire struct atomically via READONCE():
mpseed = READONCE(net->ipv4.sysctlfibmultipathhashseed).mpseed;
While this silently works on GCC by falling back to unaligned regular loads which the ARM64 kernel tolerates, it causes a fatal kernel panic when compiled with Clang and LTO enabled.
Commit e35123d83ee3 ("arm64: lto: Strengthen READONCE() to acquire when CONFIGLTO=y") strengthens READONCE() to use Load-Acquire instructions (ldar / ldapr) to prevent compiler reordering bugs under Clang LTO. Since the macro evaluates the full 8-byte struct, Clang emits a 64-bit ldar instruction. ARM64 architecture strictly requires ldar to be naturally aligned, thus executing it on a 4-byte aligned address triggers a strict Alignment Fault (FSC = 0x21).
Fix the read side by moving the READONCE() directly to the u32 member, which emits a safe 32-bit ldar Wn.
Furthermore, Eric Dumazet pointed out that WRITEONCE() on the entire struct in procfibmultipathhashsetseed() is also flawed. Analysis shows that Clang splits this 8-byte write into two separate 32-bit str instructions. While this avoids an alignment fault, it destroys atomicity and exposes a tear-write vulnerability. Fix this by explicitly splitting the write into two 32-bit WRITEONCE() operations.
Finally, add the missing READONCE() when reading userseed in procfibmultipathhashseed() to ensure proper pairing and concurrency safety.
Affected Software
Remediation
Event History
Frequently Asked Questions
Which systems are exposed to the kernel panic?
The issue affects ARM64 Linux kernel builds compiled with Clang and LTO enabled. The fault occurs because a 64-bit Load-Acquire operation accesses a structure that is only 4-byte aligned.
What level of access does an attacker need?
The CVSS vector indicates local access with low privileges is required. No user interaction is required, and the reported impact is denial of service through a fatal kernel panic.
How can I recognize this issue on an affected system?
An affected kernel can panic with a strict ARM64 alignment fault when executing a 64-bit ldar or ldapr instruction against the multipath hash seed. The described fault status code is FSC = 0x21.