[PATCH v3 21/21] klp-build: Add arm64 syscall patching macro
Josh Poimboeuf
jpoimboe at kernel.org
Fri Aug 7 17:41:30 PDT 2026
On Fri, May 15, 2026 at 02:44:39AM +0000, sashiko-bot at kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [Medium] The arm64 __KLP_SYSCALL_DEFINEx macro omits the ALLOW_ERROR_INJECTION declaration, silently breaking BPF error injection for livepatched syscalls.
> --
>
> commit b4d1a9ea352f196a7fd3e7198fdade51440d08e5
> Author: Josh Poimboeuf <jpoimboe at kernel.org>
>
> klp-build: Add arm64 syscall patching macro
>
> This commit adds arm64 support for KLP_SYSCALL_DEFINEx(). The commit
> message states it is mirroring the arm64 __SYSCALL_DEFINEx() pattern from
> arch/arm64/include/asm/syscall_wrapper.h.
>
> > diff --git a/include/linux/livepatch_helpers.h b/include/linux/livepatch_helpers.h
> > index 99d68d0773fa8..4b647b83865f9 100644
> > --- a/include/linux/livepatch_helpers.h
> > +++ b/include/linux/livepatch_helpers.h
> > @@ -72,6 +72,25 @@
> > } \
> > static inline long __klp_do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__))
> >
> > +#elif defined(CONFIG_ARM64)
> > +
> > +#define __KLP_SYSCALL_DEFINEx(x, name, ...) \
> > + static long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \
> > + static inline long __klp_do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\
> > + asmlinkage long __arm64_sys##name(const struct pt_regs *regs); \
> > + asmlinkage long __arm64_sys##name(const struct pt_regs *regs) \
> > + { \
> > + return __se_sys##name(SC_ARM64_REGS_TO_ARGS(x,__VA_ARGS__));\
> > + } \
>
> Does this macro definition omit the ALLOW_ERROR_INJECTION declaration?
>
> The standard arm64 __SYSCALL_DEFINEx() macro explicitly registers the top-level
> syscall handler with ALLOW_ERROR_INJECTION() to enable BPF error injection
> workflows like bpf_override_return(). The x86 implementation correctly
> preserves this functionality.
>
> Because this macro is missing that declaration, it looks like it might
> introduce a regression where BPF cannot inject errors into the replacement
> syscalls in a livepatch module on arm64.
Fixed.
--
Josh
More information about the linux-arm-kernel
mailing list