x86/entry/64: Make cpu_entry_area.tss read-only
The TSS is a fairly juicy target for exploits, and, now that the TSS is in the cpu_entry_area, it's no longer protected by kASLR. Make it read-only on x86_64. On x86_32, it can't be RO because it's written by the CPU during task switches, and we use a task gate for double faults. I'd also be nervous about errata if we tried to make it RO even on configurations without double fault handling. [ tglx: AMD confirmed that there is no problem on 64-bit with TSS RO. So it's probably safe to assume that it's a non issue, though Intel might have been creative in that area. Still waiting for confirmation. ] Signed-off-by:Andy Lutomirski <luto@kernel.org> Signed-off-by:
Thomas Gleixner <tglx@linutronix.de> Reviewed-by:
Borislav Petkov <bpetkov@suse.de> Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Brian Gerst <brgerst@gmail.com> Cc: Dave Hansen <dave.hansen@intel.com> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc: David Laight <David.Laight@aculab.com> Cc: Denys Vlasenko <dvlasenk@redhat.com> Cc: Eduardo Valentin <eduval@amazon.com> Cc: Greg KH <gregkh@linuxfoundation.org> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Josh Poimboeuf <jpoimboe@redhat.com> Cc: Juergen Gross <jgross@suse.com> Cc: Kees Cook <keescook@chromium.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Rik van Riel <riel@redhat.com> Cc: Will Deacon <will.deacon@arm.com> Cc: aliguori@amazon.com Cc: daniel.gruss@iaik.tugraz.at Cc: hughd@google.com Cc: keescook@google.com Link: https://lkml.kernel.org/r/20171204150606.733700132@linutronix.de Signed-off-by:
Ingo Molnar <mingo@kernel.org>
Showing
- arch/x86/entry/entry_32.S 2 additions, 2 deletionsarch/x86/entry/entry_32.S
- arch/x86/entry/entry_64.S 4 additions, 4 deletionsarch/x86/entry/entry_64.S
- arch/x86/include/asm/fixmap.h 9 additions, 4 deletionsarch/x86/include/asm/fixmap.h
- arch/x86/include/asm/processor.h 8 additions, 9 deletionsarch/x86/include/asm/processor.h
- arch/x86/include/asm/switch_to.h 2 additions, 2 deletionsarch/x86/include/asm/switch_to.h
- arch/x86/include/asm/thread_info.h 1 addition, 1 deletionarch/x86/include/asm/thread_info.h
- arch/x86/kernel/asm-offsets.c 2 additions, 3 deletionsarch/x86/kernel/asm-offsets.c
- arch/x86/kernel/asm-offsets_32.c 2 additions, 2 deletionsarch/x86/kernel/asm-offsets_32.c
- arch/x86/kernel/cpu/common.c 19 additions, 10 deletionsarch/x86/kernel/cpu/common.c
- arch/x86/kernel/ioport.c 1 addition, 1 deletionarch/x86/kernel/ioport.c
- arch/x86/kernel/process.c 3 additions, 3 deletionsarch/x86/kernel/process.c
- arch/x86/kernel/process_32.c 1 addition, 1 deletionarch/x86/kernel/process_32.c
- arch/x86/kernel/process_64.c 1 addition, 1 deletionarch/x86/kernel/process_64.c
- arch/x86/kernel/traps.c 2 additions, 2 deletionsarch/x86/kernel/traps.c
- arch/x86/lib/delay.c 2 additions, 2 deletionsarch/x86/lib/delay.c
- arch/x86/xen/enlighten_pv.c 1 addition, 1 deletionarch/x86/xen/enlighten_pv.c
Loading
Please register or sign in to comment