HIGH Introduced in 6.18
bpf LoadAcquire Leak
CVE-2026-92517
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H
01Description
In the Linux kernel, the following vulnerability has been resolved: bpf, riscv: Fix extable handling for arena load_acquire emit_atomic_ld_st() returns 1 to have build_body() skip the zext after a sub-word load_acquire. The caller does "ret = ret ?: add_exception_handler(...)", which skips add_exception_handler() on any non-zero ret, so the extable entry is missing and a faulting PROBE_ATOMIC load_acquire oopses. REG_DONT_CLEAR_MARKER leaves rd stale on fault, and the verifier still thinks the load overwrote it, so a program can leak it through a map. Check ret >= 0 before calling add_exception_handler(), and pass rd for LOAD_ACQ so the fault zeroes rd like a PROBE_MEM load. Return ret unchanged for the zext skip.
02KernelScan AI Analysis
Risk summary
A logic error in the RISC-V BPF JIT causes arena load-acquire instructions to be compiled without a fault handler, leading to a kernel oops on faulting accesses. The destination register is also left unzeroed on fault while the verifier believes the load succeeded, allowing a BPF program to leak stale kernel register contents through a map. Any user who can load BPF programs (CAP_BPF or unprivileged BPF enabled) on affected RISC-V kernels can trigger this.
Vulnerability analysis
On RISC-V kernels, the BPF JIT compiler for arena load-acquire instructions mistakenly omits the fault handler. The compiler uses an internal signal to decide whether to skip a later zero-extension step, but it also accidentally uses that same signal to decide whether to register the handler. When the skip signal is sent, the handler is omitted. Without it, a faulting load-acquire crashes the kernel. On a fault, the destination register is also left containing a stale value while the verifier believes it was cleared, so a BPF program can read that stale kernel data and leak it through a map. The fix separates the two decisions so the fault handler is always registered and the destination register is zeroed on fault, matching other probe-style loads. Any user who can load BPF programs on affected RISC-V kernels can trigger this.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 6.18 | 6.18 | 6.18.52 | 26d9496c8265 |
| mainline | 6.18 | 7.3-rc1 | 5eb8921371c6 |
| 7.2 | 6.18 | 7.2.6 | 08fe2eaa6091 |