linux/arch/riscv/net
Chen Pei 536b523b40
bpf, riscv: Make arena support depend on ZACAS
The arena range tree allocates its nodes with kmalloc_nolock() since
commit f8c67d8550 ("bpf: Use kmalloc_nolock() in range tree").
kmalloc_nolock() requires slab caches with cmpxchg128 support
(__CMPXCHG_DOUBLE); on riscv cmpxchg128 is provided by the ZACAS
extension. On systems without ZACAS every arena map creation fails
with a misleading -ENOMEM.

Report the missing support instead: make bpf_jit_supports_arena()
return system_has_cmpxchg128() where it is defined, so arena map
creation fails with -EOPNOTSUPP on systems without ZACAS. The macro
is only defined when both CONFIG_RISCV_ISA_ZACAS and
CONFIG_TOOLCHAIN_HAS_ZACAS are enabled, so guard it with #ifdef the
same way mm/slab.h consumes it, and reject arena otherwise. This
matches how arena BPF_CMPXCHG instructions are already gated on ZACAS
in bpf_jit_supports_insn().

Fixes: f8c67d8550 ("bpf: Use kmalloc_nolock() in range tree")
Signed-off-by: Chen Pei <cp0613@linux.alibaba.com>
Acked-by: Pu Lehui <pulehui@huawei.com>
Acked-by: Björn Töpel <bjorn@kernel.org>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/bpf/20260902061451.1416-1-cp0613@linux.alibaba.com
Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
2026-09-06 16:23:12 +02:00
..
bpf_jit_comp32.c riscv, bpf: Add 32 bit atomic operations to RV32 JIT 2026-07-21 21:20:05 +02:00
bpf_jit_comp64.c bpf, riscv: Make arena support depend on ZACAS 2026-09-06 16:23:12 +02:00
bpf_jit_core.c riscv, bpf: Using kvzalloc_objs to allocate cache buffer 2026-07-21 20:18:48 +02:00
bpf_jit.h riscv, bpf: Mixing bpf2bpf and tailcalls 2026-07-21 20:19:07 +02:00
bpf_timed_may_goto.S bpf, riscv: Add support for timed may_goto 2026-07-24 22:20:48 +02:00
Makefile bpf, riscv: Add support for timed may_goto 2026-07-24 22:20:48 +02:00