| From 9549bc72721600d1be9cc7ea98da5838416fc492 Mon Sep 17 00:00:00 2001 |
| From: Kees Cook <keescook@chromium.org> |
| Date: Tue, 23 Apr 2019 11:38:27 -0700 |
| Subject: x86/build: Move _etext to actual end of .text |
| |
| [ Upstream commit 392bef709659abea614abfe53cf228e7a59876a4 ] |
| |
| When building x86 with Clang LTO and CFI, CFI jump regions are |
| automatically added to the end of the .text section late in linking. As a |
| result, the _etext position was being labelled before the appended jump |
| regions, causing confusion about where the boundaries of the executable |
| region actually are in the running kernel, and broke at least the fault |
| injection code. This moves the _etext mark to outside (and immediately |
| after) the .text area, as it already the case on other architectures |
| (e.g. arm64, arm). |
| |
| Reported-and-tested-by: Sami Tolvanen <samitolvanen@google.com> |
| Signed-off-by: Kees Cook <keescook@chromium.org> |
| Cc: Borislav Petkov <bp@suse.de> |
| Cc: Linus Torvalds <torvalds@linux-foundation.org> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: Thomas Gleixner <tglx@linutronix.de> |
| Link: http://lkml.kernel.org/r/20190423183827.GA4012@beast |
| Signed-off-by: Ingo Molnar <mingo@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/x86/kernel/vmlinux.lds.S | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S |
| index a5127b2c195f9..834659288ba9b 100644 |
| --- a/arch/x86/kernel/vmlinux.lds.S |
| +++ b/arch/x86/kernel/vmlinux.lds.S |
| @@ -141,11 +141,11 @@ SECTIONS |
| *(.text.__x86.indirect_thunk) |
| __indirect_thunk_end = .; |
| #endif |
| - |
| - /* End of text section */ |
| - _etext = .; |
| } :text = 0x9090 |
| |
| + /* End of text section */ |
| + _etext = .; |
| + |
| NOTES :text :note |
| |
| EXCEPTION_TABLE(16) :text = 0x9090 |
| -- |
| 2.20.1 |
| |