Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 838dbae0 authored by David Woodhouse's avatar David Woodhouse Committed by Greg Kroah-Hartman
Browse files

x86/retpoline: Avoid retpolines for built-in __init functions



commit 66f79309

There's no point in building init code with retpolines, since it runs before
any potentially hostile userspace does. And before the retpoline is actually
ALTERNATIVEd into place, for much of it.

Signed-off-by: default avatarDavid Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Cc: karahmed@amazon.de
Cc: peterz@infradead.org
Cc: bp@alien8.de
Link: https://lkml.kernel.org/r/1517484441-1420-2-git-send-email-dwmw@amazon.co.uk


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 6f6eb84b
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -5,6 +5,13 @@
#include <linux/compiler.h>
#include <linux/types.h>

/* Built-in __init functions needn't be compiled with retpoline */
#if defined(RETPOLINE) && !defined(MODULE)
#define __noretpoline __attribute__((indirect_branch("keep")))
#else
#define __noretpoline
#endif

/* These macros are used to mark some functions or 
 * initialized data (doesn't apply to uninitialized data)
 * as `initialization' functions. The kernel can take this
@@ -40,7 +47,7 @@

/* These are for everybody (although not all archs will actually
   discard it in modules) */
#define __init		__section(.init.text) __cold __inittrace __latent_entropy
#define __init		__section(.init.text) __cold __inittrace __latent_entropy __noretpoline
#define __initdata	__section(.init.data)
#define __initconst	__section(.init.rodata)
#define __exitdata	__section(.exit.data)