On Tue, Jul 07, 2026 at 03:20:26PM +0800, George Guo wrote: > From: George Guo <[email protected]> > > Add LoongArch support for KLP_SYSCALL_DEFINEx(), mirroring the generic > __SYSCALL_DEFINEx() pattern from include/linux/syscalls.h. > > Co-developed-by: Kexin Liu <[email protected]> > Signed-off-by: Kexin Liu <[email protected]> > Signed-off-by: George Guo <[email protected]> > --- > include/linux/livepatch_helpers.h | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/include/linux/livepatch_helpers.h > b/include/linux/livepatch_helpers.h > index 4b647b83865f..a8aad067177b 100644 > --- a/include/linux/livepatch_helpers.h > +++ b/include/linux/livepatch_helpers.h > @@ -91,6 +91,28 @@ > } \ > static inline long __klp_do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) > > +#elif defined(CONFIG_LOONGARCH) > + > +#define __KLP_SYSCALL_DEFINEx(x, name, ...) \ > + __diag_push(); \ > + __diag_ignore(GCC, 8, "-Wattribute-alias", \ > + "Type aliasing is used to sanitize syscall arguments");\ > + asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ > + __attribute__((alias(__stringify(__se_sys##name)))); \ > + ALLOW_ERROR_INJECTION(sys##name, ERRNO); \ > + static inline long __klp_do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ > + asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ > + asmlinkage long > __attribute__((optimize("-fno-optimize-sibling-calls")))\ > + __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ > + { \ > + long ret = __klp_do_sys##name(__MAP(x,__SC_CAST,__VA_ARGS__));\ > + __MAP(x,__SC_TEST,__VA_ARGS__); \ > + __PROTECT(x, ret,__MAP(x,__SC_ARGS,__VA_ARGS__)); \ > + return ret; \ > + } \ > + __diag_pop(); \ > + static inline long __klp_do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) > + > #endif
Nit: The other macros in livepatch_helpers use tabs to pad out to the line continuation '\'. -- Joe

