static_call: Move struct static_call_key definition to static_call_types.h
authorJuergen Gross <jgross@suse.com>
Thu, 11 Mar 2021 14:23:07 +0000 (15:23 +0100)
committerBorislav Petkov <bp@suse.de>
Thu, 11 Mar 2021 15:04:39 +0000 (16:04 +0100)
Having the definition of static_call() in static_call_types.h makes
no sense as long struct static_call_key isn't defined there, as the
generic implementation of static_call() is referencing this structure.

So move the definition of struct static_call_key to static_call_types.h.

Signed-off-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20210311142319.4723-3-jgross@suse.com
include/linux/static_call.h
include/linux/static_call_types.h
tools/include/linux/static_call_types.h

index 85ecc78..76b8812 100644 (file)
@@ -128,16 +128,6 @@ struct static_call_mod {
        struct static_call_site *sites;
 };
 
-struct static_call_key {
-       void *func;
-       union {
-               /* bit 0: 0 = mods, 1 = sites */
-               unsigned long type;
-               struct static_call_mod *mods;
-               struct static_call_site *sites;
-       };
-};
-
 /* For finding the key associated with a trampoline */
 struct static_call_tramp_key {
        s32 tramp;
@@ -187,10 +177,6 @@ extern long __static_call_return0(void);
 
 static inline int static_call_init(void) { return 0; }
 
-struct static_call_key {
-       void *func;
-};
-
 #define __DEFINE_STATIC_CALL(name, _func, _func_init)                  \
        DECLARE_STATIC_CALL(name, _func);                               \
        struct static_call_key STATIC_CALL_KEY(name) = {                \
@@ -243,10 +229,6 @@ static inline long __static_call_return0(void)
 
 static inline int static_call_init(void) { return 0; }
 
-struct static_call_key {
-       void *func;
-};
-
 static inline long __static_call_return0(void)
 {
        return 0;
index ae5662d..5a00b8b 100644 (file)
@@ -58,11 +58,25 @@ struct static_call_site {
        __raw_static_call(name);                                        \
 })
 
+struct static_call_key {
+       void *func;
+       union {
+               /* bit 0: 0 = mods, 1 = sites */
+               unsigned long type;
+               struct static_call_mod *mods;
+               struct static_call_site *sites;
+       };
+};
+
 #else /* !CONFIG_HAVE_STATIC_CALL_INLINE */
 
 #define __STATIC_CALL_ADDRESSABLE(name)
 #define __static_call(name)    __raw_static_call(name)
 
+struct static_call_key {
+       void *func;
+};
+
 #endif /* CONFIG_HAVE_STATIC_CALL_INLINE */
 
 #ifdef MODULE
@@ -77,6 +91,10 @@ struct static_call_site {
 
 #else
 
+struct static_call_key {
+       void *func;
+};
+
 #define static_call(name)                                              \
        ((typeof(STATIC_CALL_TRAMP(name))*)(STATIC_CALL_KEY(name).func))
 
index ae5662d..5a00b8b 100644 (file)
@@ -58,11 +58,25 @@ struct static_call_site {
        __raw_static_call(name);                                        \
 })
 
+struct static_call_key {
+       void *func;
+       union {
+               /* bit 0: 0 = mods, 1 = sites */
+               unsigned long type;
+               struct static_call_mod *mods;
+               struct static_call_site *sites;
+       };
+};
+
 #else /* !CONFIG_HAVE_STATIC_CALL_INLINE */
 
 #define __STATIC_CALL_ADDRESSABLE(name)
 #define __static_call(name)    __raw_static_call(name)
 
+struct static_call_key {
+       void *func;
+};
+
 #endif /* CONFIG_HAVE_STATIC_CALL_INLINE */
 
 #ifdef MODULE
@@ -77,6 +91,10 @@ struct static_call_site {
 
 #else
 
+struct static_call_key {
+       void *func;
+};
+
 #define static_call(name)                                              \
        ((typeof(STATIC_CALL_TRAMP(name))*)(STATIC_CALL_KEY(name).func))