net: add EXPORT_INDIRECT_CALLABLE wrapper
When a static function is annotated with INDIRECT_CALLABLE_SCOPE and CONFIG_RETPOLINE is set, the static keyword is removed. Sometimes the function needs to be exported but EXPORT_SYMBOL can't be used because if CONFIG_RETPOLINE is not set, we will attempt to export a static symbol. This patch introduces a new indirect call wrapper: EXPORT_INDIRECT_CALLABLE. This basically does EXPORT_SYMBOL when CONFIG_RETPOLINE is set, but does nothing when it's not. Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Brian Vazquez <brianvv@google.com> Link: https://lore.kernel.org/r/20210204181839.558951-1-brianvv@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
7e3ce05e7f
commit
0053859496
|
@ -36,6 +36,7 @@
|
|||
|
||||
#define INDIRECT_CALLABLE_DECLARE(f) f
|
||||
#define INDIRECT_CALLABLE_SCOPE
|
||||
#define EXPORT_INDIRECT_CALLABLE(f) EXPORT_SYMBOL(f)
|
||||
|
||||
#else
|
||||
#define INDIRECT_CALL_1(f, f1, ...) f(__VA_ARGS__)
|
||||
|
@ -44,6 +45,7 @@
|
|||
#define INDIRECT_CALL_4(f, f4, f3, f2, f1, ...) f(__VA_ARGS__)
|
||||
#define INDIRECT_CALLABLE_DECLARE(f)
|
||||
#define INDIRECT_CALLABLE_SCOPE static
|
||||
#define EXPORT_INDIRECT_CALLABLE(f)
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue