In the Linux kernel, the following vulnerability has been resolved:
net: ipv4: fix ARM64 alignment fault in multipath hash seed
`struct sysctl_fib_multipath_hash_seed` contains two u32 fields (user_seed and mp_seed), making it an 8-byte structure with a 4-byte alignment requirement.
In `fib_multipath_hash_from_keys()`, the code evaluates the entire struct atomically via `READ_ONCE()`:
mp_seed = READ_ONCE(net->ipv4.sysctl_fib_multipath_hash_seed).mp_seed;
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 READ_ONCE() to acquire when CONFIG_LTO=y") strengthens `READ_ONCE()` 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 `READ_ONCE()` directly to the `u32` member, which emits a safe 32-bit `ldar Wn`.
Furthermore, Eric Dumazet pointed out that `WRITE_ONCE()` on the entire struct in `proc_fib_multipath_hash_set_seed()` 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 `WRITE_ONCE()` operations.
Finally, add the missing `READ_ONCE()` when reading `user_seed` in `proc_fib_multipath_hash_seed()` to ensure proper pairing and concurrency safety.
CVSS Details
- CVSS 3.1 Base Score: 5.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon_linux_2023 | — | Upgrade python3-perf6.12-debuginfoUpgrade kernel6.18-develUpgrade kernel6.18-modules-extra-commonUpgrade kernel6.18-debuginfo-common-x86_64Upgrade perf6.18Upgrade kernel6.12-libbpfUpgrade kernel6.18-modules-extraUpgrade python3-perf6.18-debuginfoUpgrade kernel6.18-libbpf-debuginfoUpgrade kernel6.18-libbpf-staticUpgrade perf6.12Upgrade kernel6.12-tools-develUpgrade kernel6.18-tools-develUpgrade kernel6.12-toolsUpgrade bpftool6.18Upgrade kernel6.12-headersUpgrade kernel6.18-tools-debuginfoUpgrade kernel6.12-tools-debuginfoUpgrade python3-perf6.18Upgrade kernel6.12-debuginfoUpgrade kernel6.12-develUpgrade kernel6.18-toolsUpgrade kernel6.12-debuginfo-common-aarch64Upgrade kernel6.12-libbpf-debuginfoUpgrade kernel6.12-libbpf-staticUpgrade kernel6.12-libbpf-develUpgrade kernel6.18-libbpf-develUpgrade kernel6.18-debuginfo-common-aarch64Upgrade kernel6.18-debuginfoUpgrade kernel-livepatch-6.12.77-99.140Upgrade bpftool6.12-debuginfoUpgrade perf6.18-debuginfoUpgrade kernel6.18-headersUpgrade kernel6.18Upgrade bpftool6.12Upgrade bpftool6.18-debuginfoUpgrade kernel6.12-debuginfo-common-x86_64Upgrade kernel6.12Upgrade kernel6.18-libbpfUpgrade kernel6.12-modules-extra-commonUpgrade perf6.12-debuginfoUpgrade kernel6.12-modules-extraUpgrade kernel-livepatch-6.18.20-20.229Upgrade python3-perf6.12 | Apr 9, 2026 | Mar 25, 2026 |
| Debian | — | Upgrade linux | Jul 23, 2026 | Jul 23, 2026 |
| Redhat_linux | — | No solution exists | Jul 17, 2026 | Mar 25, 2026 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub