For pre-boot environments, do not use the static call definition of the WARN_trap() macro.
Suggested-by: Peter Zijlstra <[email protected]> Signed-off-by: Ross Philipson <[email protected]> --- arch/x86/include/asm/bug.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/bug.h b/arch/x86/include/asm/bug.h index 80c1696d8d59..7899768ae644 100644 --- a/arch/x86/include/asm/bug.h +++ b/arch/x86/include/asm/bug.h @@ -138,8 +138,14 @@ do { \ #ifdef HAVE_ARCH_BUG_FORMAT_ARGS #ifndef __ASSEMBLER__ + +#ifndef __DISABLE_EXPORTS #include <linux/static_call_types.h> DECLARE_STATIC_CALL(WARN_trap, __WARN_trap); +#define WARN_trap(...) static_call_mod(WARN_trap)(__VA_ARGS__) +#else /* __DISABLE_EXPORTS */ +#define WARN_trap(...) __WARN_trap(__VA_ARGS__) +#endif /* __DISABLE_EXPORTS */ struct pt_regs; struct sysv_va_list { /* from AMD64 System V ABI */ @@ -172,7 +178,7 @@ extern void *__warn_args(struct arch_va_list *args, struct pt_regs *regs); #define __WARN_print_arg(flags, format, arg...) \ do { \ int __flags = (flags) | BUGFLAG_WARNING | BUGFLAG_ARGS ; \ - static_call_mod(WARN_trap)(__WARN_bug_entry(__flags, format), ## arg); \ + WARN_trap(__WARN_bug_entry(__flags, format), ## arg); \ asm (""); /* inhibit tail-call optimization */ \ } while (0) -- 2.47.3

