From: Andy Lutomirski <luto@kernel.org>
To: X86 ML <x86@kernel.org>
Cc: Borislav Petkov <bpetkov@suse.de>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Brian Gerst <brgerst@gmail.com>,
Dave Hansen <dave.hansen@intel.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Josh Poimboeuf <jpoimboe@redhat.com>,
Andy Lutomirski <luto@kernel.org>
Subject: [PATCH v3 00/19] Entry stack switching
Date: Thu, 23 Nov 2017 20:32:46 -0800 [thread overview]
Message-ID: <cover.1511497874.git.luto@kernel.org> (raw)
This sets up stack switching, including for SYSCALL. I think it's
in decent shape.
I'm fiddling with a patch to make the TSS remap read-only on 64-bit.
Known issues:
- I think we're going to want a way to turn the stack switching on and
off either at boot time or at runtime. It should be fairly straightforward
to make it work.
- I think the ORC unwinder isn't so good at dealing with stack overflows.
It bails too early (I think), resulting in lots of ? entries. This
isn't a regression with this series -- it's just something that could
be improved.
Changes from v2:
- Tons of review comments
- The IDT entry stack switching code is less messy
- The last patch is new
Changes from v1:
- Fixed KASAN for real (as far as I can tell).
- Compiler errors due to my old hackish KASAN fix are gone.
- Context tracking lockdep errors are fixed (and maybe
Changes from farther back:
- This is quite massively changed from last time.
- 32-bit seems to build and mostly work
- KASAN is less broken now
Andy Lutomirski (19):
x86/asm/64: Allocate and enable the SYSENTER stack
x86/dumpstack: Add get_stack_info() support for the SYSENTER stack
x86/gdt: Put per-cpu GDT remaps in ascending order
x86/fixmap: Generalize the GDT fixmap mechanism
x86/kasan/64: Teach KASAN about the cpu_entry_area
x86/asm: Fix assumptions that the HW TSS is at the beginning of
cpu_tss
x86/dumpstack: Handle stack overflow on all stacks
x86/asm: Move SYSENTER_stack to the beginning of struct tss_struct
x86/asm: Remap the TSS into the cpu entry area
x86/asm/64: Separate cpu_current_top_of_stack from TSS.sp0
x86/espfix/64: Stop assuming that pt_regs is on the entry stack
x86/asm/64: Use a percpu trampoline stack for IDT entries
x86/asm/64: Return to userspace from the trampoline stack
x86/entry/64: Create a percpu SYSCALL entry trampoline
x86/irq: Remove an old outdated comment about context tracking races
x86/irq/64: In the stack overflow warning, print the offending IP
x86/entry/64: Move the IST stacks into cpu_entry_area
x86/entry/64: Remove the SYSENTER stack canary
x86/entry: Clean up SYSENTER_stack code
arch/x86/entry/entry_32.S | 6 +-
arch/x86/entry/entry_64.S | 170 ++++++++++++++++++++++++++++++++-----
arch/x86/entry/entry_64_compat.S | 7 +-
arch/x86/include/asm/desc.h | 11 +--
arch/x86/include/asm/fixmap.h | 58 ++++++++++++-
arch/x86/include/asm/processor.h | 49 ++++++-----
arch/x86/include/asm/stacktrace.h | 3 +
arch/x86/include/asm/switch_to.h | 2 +-
arch/x86/include/asm/thread_info.h | 2 +-
arch/x86/include/asm/traps.h | 1 -
arch/x86/kernel/asm-offsets.c | 7 ++
arch/x86/kernel/asm-offsets_32.c | 5 --
arch/x86/kernel/asm-offsets_64.c | 1 +
arch/x86/kernel/cpu/common.c | 133 +++++++++++++++++++++--------
arch/x86/kernel/doublefault.c | 36 ++++----
arch/x86/kernel/dumpstack.c | 42 ++++++---
arch/x86/kernel/dumpstack_32.c | 6 ++
arch/x86/kernel/dumpstack_64.c | 6 ++
arch/x86/kernel/irq.c | 12 ---
arch/x86/kernel/irq_64.c | 4 +-
arch/x86/kernel/process.c | 13 ++-
arch/x86/kernel/process_64.c | 1 +
arch/x86/kernel/traps.c | 27 +++---
arch/x86/kernel/vmlinux.lds.S | 10 +++
arch/x86/mm/kasan_init_64.c | 13 ++-
arch/x86/power/cpu.c | 16 ++--
arch/x86/xen/mmu_pv.c | 2 +-
27 files changed, 473 insertions(+), 170 deletions(-)
--
2.13.6
next reply other threads:[~2017-11-24 4:33 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-24 4:32 Andy Lutomirski [this message]
2017-11-24 4:32 ` [PATCH v3 01/19] x86/asm/64: Allocate and enable the SYSENTER stack Andy Lutomirski
2017-11-24 4:32 ` [PATCH v3 02/19] x86/dumpstack: Add get_stack_info() support for " Andy Lutomirski
2017-11-24 4:32 ` [PATCH v3 03/19] x86/gdt: Put per-cpu GDT remaps in ascending order Andy Lutomirski
2017-11-24 4:32 ` [PATCH v3 04/19] x86/fixmap: Generalize the GDT fixmap mechanism Andy Lutomirski
2017-11-24 4:32 ` [PATCH v3 05/19] x86/kasan/64: Teach KASAN about the cpu_entry_area Andy Lutomirski
2017-11-24 13:16 ` Andrey Ryabinin
2017-11-24 16:27 ` Andy Lutomirski
2017-11-24 17:21 ` [PATCH v4] x86/mm/kasan: " Andrey Ryabinin
2017-11-24 19:26 ` Andy Lutomirski
2017-11-24 17:26 ` [PATCH v3 05/19] x86/kasan/64: " Andrey Ryabinin
2017-11-24 4:32 ` [PATCH v3 06/19] x86/asm: Fix assumptions that the HW TSS is at the beginning of cpu_tss Andy Lutomirski
2017-11-24 4:32 ` [PATCH v3 07/19] x86/dumpstack: Handle stack overflow on all stacks Andy Lutomirski
2017-11-24 4:32 ` [PATCH v3 08/19] x86/asm: Move SYSENTER_stack to the beginning of struct tss_struct Andy Lutomirski
2017-11-24 4:32 ` [PATCH v3 09/19] x86/asm: Remap the TSS into the cpu entry area Andy Lutomirski
2017-11-24 4:32 ` [PATCH v3 10/19] x86/asm/64: Separate cpu_current_top_of_stack from TSS.sp0 Andy Lutomirski
2017-11-24 4:32 ` [PATCH v3 11/19] x86/espfix/64: Stop assuming that pt_regs is on the entry stack Andy Lutomirski
2017-11-24 4:32 ` [PATCH v3 12/19] x86/asm/64: Use a percpu trampoline stack for IDT entries Andy Lutomirski
2017-11-24 4:32 ` [PATCH v3 13/19] x86/asm/64: Return to userspace from the trampoline stack Andy Lutomirski
2017-11-24 4:33 ` [PATCH v3 14/19] x86/entry/64: Create a percpu SYSCALL entry trampoline Andy Lutomirski
2017-11-24 11:39 ` David Laight
2017-12-01 5:56 ` Andy Lutomirski
2017-11-24 4:33 ` [PATCH v3 15/19] x86/irq: Remove an old outdated comment about context tracking races Andy Lutomirski
2017-11-24 4:33 ` [PATCH v3 16/19] x86/irq/64: In the stack overflow warning, print the offending IP Andy Lutomirski
2017-11-24 4:33 ` [PATCH v3 17/19] x86/entry/64: Move the IST stacks into cpu_entry_area Andy Lutomirski
2017-11-24 4:33 ` [PATCH v3 18/19] x86/entry/64: Remove the SYSENTER stack canary Andy Lutomirski
2017-11-24 4:33 ` [PATCH v3 19/19] x86/entry: Clean up SYSENTER_stack code Andy Lutomirski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1511497874.git.luto@kernel.org \
--to=luto@kernel.org \
--cc=bpetkov@suse.de \
--cc=brgerst@gmail.com \
--cc=dave.hansen@intel.com \
--cc=jpoimboe@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.