Messages in this thread Patch in this message | | | Date | Fri, 29 Apr 2016 03:49:53 -0700 | From | tip-bot for Andy Lutomirski <> | Subject | [tip:x86/asm] x86/segments/64: When load_gs_index fails, clear the base |
| |
Commit-ID: b038c842b385f1470f991078e71b7c5b084a7341 Gitweb: http://git.kernel.org/tip/b038c842b385f1470f991078e71b7c5b084a7341 Author: Andy Lutomirski <luto@kernel.org> AuthorDate: Tue, 26 Apr 2016 12:23:27 -0700 Committer: Ingo Molnar <mingo@kernel.org> CommitDate: Fri, 29 Apr 2016 11:56:41 +0200
x86/segments/64: When load_gs_index fails, clear the base
On AMD CPUs, a failed load_gs_base currently may not clear the FS base. Fix it.
Signed-off-by: Andy Lutomirski <luto@kernel.org> Cc: Andy Lutomirski <luto@amacapital.net> Cc: Borislav Petkov <bp@alien8.de> Cc: Brian Gerst <brgerst@gmail.com> Cc: Denys Vlasenko <dvlasenk@redhat.com> Cc: H. Peter Anvin <hpa@zytor.com> 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/1a6c4d3a8a4e7be79ba448b42685e0321d50c14c.1461698311.git.luto@kernel.org Signed-off-by: Ingo Molnar <mingo@kernel.org> --- arch/x86/entry/entry_64.S | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S index 1693c17..6344629 100644 --- a/arch/x86/entry/entry_64.S +++ b/arch/x86/entry/entry_64.S @@ -794,6 +794,12 @@ END(native_load_gs_index) /* running with kernelgs */ bad_gs: SWAPGS /* switch back to user gs */ +.macro ZAP_GS + /* This can't be a string because the preprocessor needs to see it. */ + movl $__USER_DS, %eax + movl %eax, %gs +.endm + ALTERNATIVE "", "ZAP_GS", X86_BUG_NULL_SEG xorl %eax, %eax movl %eax, %gs jmp 2b
| |