ARM: 9477/1: Disable broken eBPF JIT on the Risc PC
authorEthan Nelson-Moore <enelsonmoore@gmail.com>
Sun, 14 Jun 2026 01:45:38 +0000 (02:45 +0100)
committerRussell King <rmk+kernel@armlinux.org.uk>
Wed, 5 Aug 2026 15:12:24 +0000 (16:12 +0100)
The eBPF JIT unconditionally generates ldrh/strh instructions, which do
not function correctly on the Risc PC because its bus is unable to
signal half-word accesses. Work around this issue by disabling the eBPF
JIT when building for ARMv3 (the Risc PC is the only currently
supported machine whose kernel is built for ARMv3).

Comments from Ethan Nelson-Moore:

 From LKML: https://lore.kernel.org/all/CAD++jL=0qYGoygUwGEXQL7C_ROnC7kfpRv8RA+H5tNWwYu+pQA@mail.gmail.com/

 The commit message has been updated slightly relative to the version on LKML to clarify that the Risc PC is not actually ARMv3.

Fixes: 39c13c204bb1 ("arm: eBPF JIT compiler")
Cc: stable@vger.kernel.org
Signed-off-by: Ethan Nelson-Moore <enelsonmoore@gmail.com>
Reviewed-by: Linus Walleij <linusw@kernel.org>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
arch/arm/Kconfig

index 9187240..b8aa3fc 100644 (file)
@@ -98,7 +98,7 @@ config ARM
        select HAVE_ARCH_TRACEHOOK
        select HAVE_ARCH_TRANSPARENT_HUGEPAGE if ARM_LPAE
        select HAVE_ARM_SMCCC if CPU_V7
-       select HAVE_EBPF_JIT if !CPU_ENDIAN_BE32
+       select HAVE_EBPF_JIT if !CPU_ENDIAN_BE32 && !CPU_32v3
        select HAVE_CONTEXT_TRACKING_USER
        select HAVE_C_RECORDMCOUNT
        select HAVE_BUILDTIME_MCOUNT_SORT