| From 736e80a4213e9bbce40a7c050337047128b472ac Mon Sep 17 00:00:00 2001 |
| From: Masami Hiramatsu <mhiramat@kernel.org> |
| Date: Fri, 19 Jan 2018 01:14:21 +0900 |
| Subject: retpoline: Introduce start/end markers of indirect thunk |
| |
| From: Masami Hiramatsu <mhiramat@kernel.org> |
| |
| commit 736e80a4213e9bbce40a7c050337047128b472ac upstream. |
| |
| Introduce start/end markers of __x86_indirect_thunk_* functions. |
| To make it easy, consolidate .text.__x86.indirect_thunk.* sections |
| to one .text.__x86.indirect_thunk section and put it in the |
| end of kernel text section and adds __indirect_thunk_start/end |
| so that other subsystem (e.g. kprobes) can identify it. |
| |
| Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| Acked-by: David Woodhouse <dwmw@amazon.co.uk> |
| Cc: Andi Kleen <ak@linux.intel.com> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com> |
| Cc: Arjan van de Ven <arjan@linux.intel.com> |
| Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org> |
| Link: https://lkml.kernel.org/r/151629206178.10241.6828804696410044771.stgit@devbox |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/x86/include/asm/nospec-branch.h | 3 +++ |
| arch/x86/kernel/vmlinux.lds.S | 7 +++++++ |
| arch/x86/lib/retpoline.S | 2 +- |
| 3 files changed, 11 insertions(+), 1 deletion(-) |
| |
| --- a/arch/x86/include/asm/nospec-branch.h |
| +++ b/arch/x86/include/asm/nospec-branch.h |
| @@ -194,6 +194,9 @@ enum spectre_v2_mitigation { |
| SPECTRE_V2_IBRS, |
| }; |
| |
| +extern char __indirect_thunk_start[]; |
| +extern char __indirect_thunk_end[]; |
| + |
| /* |
| * On VMEXIT we must ensure that no RSB predictions learned in the guest |
| * can be followed in the host, by overwriting the RSB completely. Both |
| --- a/arch/x86/kernel/vmlinux.lds.S |
| +++ b/arch/x86/kernel/vmlinux.lds.S |
| @@ -105,6 +105,13 @@ SECTIONS |
| SOFTIRQENTRY_TEXT |
| *(.fixup) |
| *(.gnu.warning) |
| + |
| +#ifdef CONFIG_RETPOLINE |
| + __indirect_thunk_start = .; |
| + *(.text.__x86.indirect_thunk) |
| + __indirect_thunk_end = .; |
| +#endif |
| + |
| /* End of text section */ |
| _etext = .; |
| } :text = 0x9090 |
| --- a/arch/x86/lib/retpoline.S |
| +++ b/arch/x86/lib/retpoline.S |
| @@ -9,7 +9,7 @@ |
| #include <asm/nospec-branch.h> |
| |
| .macro THUNK reg |
| - .section .text.__x86.indirect_thunk.\reg |
| + .section .text.__x86.indirect_thunk |
| |
| ENTRY(__x86_indirect_thunk_\reg) |
| CFI_STARTPROC |