[PATCH v3] bpf, riscv: fix extable handling for arena load_acquire
Björn Töpel
bjorn at kernel.org
Tue Jul 21 11:17:48 PDT 2026
Feng Jiang <jiangfeng at kylinos.cn> writes:
> 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.
>
> Fixes: fb7cefabae81 ("riscv, bpf: Add support arena atomics for RV64")
> Signed-off-by: Feng Jiang <jiangfeng at kylinos.cn>
Thank you for spinning a new version!
Reviewed-by: Björn Töpel <bjorn at kernel.org>
Acked-by: Björn Töpel <bjorn at kernel.org>
More information about the linux-riscv
mailing list