Commit b0466648 authored by Juergen Gross's avatar Juergen Gross Committed by Borislav Petkov
Browse files

static_call: Move struct static_call_key definition to static_call_types.h



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: default avatarJuergen Gross <jgross@suse.com>
Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20210311142319.4723-3-jgross@suse.com
parent 5e21a3ec
Loading
Loading
Loading
Loading
+0 −18
Original line number Diff line number Diff line
@@ -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;
+18 −0
Original line number Diff line number Diff line
@@ -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))

+18 −0
Original line number Diff line number Diff line
@@ -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))