linux-arch.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH v4 00/27] Control Flow Enforcement: Shadow Stack
@ 2018-09-21 15:03 Yu-cheng Yu
  2018-09-21 15:03 ` Yu-cheng Yu
                   ` (28 more replies)
  0 siblings, 29 replies; 142+ messages in thread
From: Yu-cheng Yu @ 2018-09-21 15:03 UTC (permalink / raw)
  To: x86, H. Peter Anvin, Thomas Gleixner, Ingo Molnar, linux-kernel,
	linux-doc, linux-mm, linux-arch, linux-api, Arnd Bergmann,
	Andy Lutomirski, Balbir Singh, Cyrill Gorcunov, Dave Hansen,
	Florian Weimer, H.J. Lu, Jann Horn, Jonathan Corbet, Kees Cook,
	Mike Kravetz, Nadav Amit, Oleg Nesterov, Pavel Machek
  Cc: Yu-cheng Yu

The previous version of CET patches can be found in the following
link:

  https://lkml.org/lkml/2018/8/30/608

Summary of changes from v3:

  Fixed an issue in page fault handling in do_swap_page().
  Fixed issues in ptep_set_wrprotect/pmdp_set_wrprotect.
  Changed WRUSS fault handling to asm_goto.
  Added shadow stack to memory accounting.
  Added a patch to create a guard gap between VMAs.
  Added a patch to prevent merging of shadow stack areas.
  Other small fixes in ELF header parsing and typos.

Yu-cheng Yu (27):
  x86/cpufeatures: Add CPUIDs for Control-flow Enforcement Technology
    (CET)
  x86/fpu/xstate: Change some names to separate XSAVES system and user
    states
  x86/fpu/xstate: Enable XSAVES system states
  x86/fpu/xstate: Add XSAVES system states for shadow stack
  Documentation/x86: Add CET description
  x86/cet: Control protection exception handler
  x86/cet/shstk: Add Kconfig option for user-mode shadow stack
  mm: Introduce VM_SHSTK for shadow stack memory
  x86/mm: Change _PAGE_DIRTY to _PAGE_DIRTY_HW
  drm/i915/gvt: Update _PAGE_DIRTY to _PAGE_DIRTY_BITS
  x86/mm: Introduce _PAGE_DIRTY_SW
  x86/mm: Modify ptep_set_wrprotect and pmdp_set_wrprotect for
    _PAGE_DIRTY_SW
  x86/mm: Shadow stack page fault error checking
  mm: Handle shadow stack page fault
  mm: Handle THP/HugeTLB shadow stack page fault
  mm: Update can_follow_write_pte/pmd for shadow stack
  mm: Introduce do_mmap_locked()
  x86/cet/shstk: User-mode shadow stack support
  x86/cet/shstk: Introduce WRUSS instruction
  x86/cet/shstk: Signal handling for shadow stack
  x86/cet/shstk: ELF header parsing of Shadow Stack
  x86/cet/shstk: Handle thread shadow stack
  mm/map: Add Shadow stack pages to memory accounting
  mm/mmap: Create a guard area between VMAs
  mm/mmap: Prevent Shadow Stack VMA merges
  x86/cet/shstk: Add arch_prctl functions for Shadow Stack
  x86/cet/shstk: Add Shadow Stack instructions to opcode map

 .../admin-guide/kernel-parameters.txt         |   6 +
 Documentation/index.rst                       |   1 +
 Documentation/x86/index.rst                   |  11 +
 Documentation/x86/intel_cet.rst               | 259 +++++++++++++
 arch/x86/Kconfig                              |  28 ++
 arch/x86/Makefile                             |   7 +
 arch/x86/entry/entry_64.S                     |   2 +-
 arch/x86/ia32/ia32_signal.c                   |  13 +
 arch/x86/include/asm/cet.h                    |  42 +++
 arch/x86/include/asm/cpufeatures.h            |   2 +
 arch/x86/include/asm/disabled-features.h      |   8 +-
 arch/x86/include/asm/elf.h                    |   5 +
 arch/x86/include/asm/fpu/internal.h           |   6 +-
 arch/x86/include/asm/fpu/types.h              |  22 ++
 arch/x86/include/asm/fpu/xstate.h             |  31 +-
 arch/x86/include/asm/mmu_context.h            |   3 +
 arch/x86/include/asm/msr-index.h              |  14 +
 arch/x86/include/asm/pgtable.h                | 191 ++++++++--
 arch/x86/include/asm/pgtable_types.h          |  31 +-
 arch/x86/include/asm/processor.h              |   5 +
 arch/x86/include/asm/sighandling.h            |   5 +
 arch/x86/include/asm/special_insns.h          |  32 ++
 arch/x86/include/asm/traps.h                  |   5 +
 arch/x86/include/uapi/asm/elf_property.h      |  15 +
 arch/x86/include/uapi/asm/prctl.h             |   5 +
 arch/x86/include/uapi/asm/processor-flags.h   |   2 +
 arch/x86/include/uapi/asm/sigcontext.h        |  17 +
 arch/x86/kernel/Makefile                      |   4 +
 arch/x86/kernel/cet.c                         | 285 +++++++++++++++
 arch/x86/kernel/cet_prctl.c                   |  79 ++++
 arch/x86/kernel/cpu/common.c                  |  24 ++
 arch/x86/kernel/cpu/scattered.c               |   1 +
 arch/x86/kernel/elf.c                         | 340 ++++++++++++++++++
 arch/x86/kernel/fpu/core.c                    |  11 +-
 arch/x86/kernel/fpu/init.c                    |  10 -
 arch/x86/kernel/fpu/signal.c                  |   6 +-
 arch/x86/kernel/fpu/xstate.c                  | 152 +++++---
 arch/x86/kernel/idt.c                         |   4 +
 arch/x86/kernel/process.c                     |   8 +
 arch/x86/kernel/process_64.c                  |   7 +
 arch/x86/kernel/relocate_kernel_64.S          |   2 +-
 arch/x86/kernel/signal.c                      |  96 +++++
 arch/x86/kernel/traps.c                       |  58 +++
 arch/x86/kvm/vmx.c                            |   2 +-
 arch/x86/lib/x86-opcode-map.txt               |  26 +-
 arch/x86/mm/fault.c                           |  27 ++
 arch/x86/mm/pgtable.c                         |  42 +++
 drivers/gpu/drm/i915/gvt/gtt.c                |   2 +-
 fs/binfmt_elf.c                               |  15 +
 fs/proc/task_mmu.c                            |   3 +
 include/asm-generic/pgtable.h                 |  14 +
 include/linux/mm.h                            |  56 ++-
 include/uapi/linux/elf.h                      |   1 +
 mm/gup.c                                      |   8 +-
 mm/huge_memory.c                              |  12 +-
 mm/memory.c                                   |   7 +-
 mm/mmap.c                                     |  11 +
 tools/objtool/arch/x86/lib/x86-opcode-map.txt |  26 +-
 58 files changed, 1946 insertions(+), 161 deletions(-)
 create mode 100644 Documentation/x86/index.rst
 create mode 100644 Documentation/x86/intel_cet.rst
 create mode 100644 arch/x86/include/asm/cet.h
 create mode 100644 arch/x86/include/uapi/asm/elf_property.h
 create mode 100644 arch/x86/kernel/cet.c
 create mode 100644 arch/x86/kernel/cet_prctl.c
 create mode 100644 arch/x86/kernel/elf.c

-- 
2.17.1

^ permalink raw reply	[flat|nested] 142+ messages in thread

end of thread, other threads:[~2018-10-17  1:20 UTC | newest]

Thread overview: 142+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-21 15:03 [RFC PATCH v4 00/27] Control Flow Enforcement: Shadow Stack Yu-cheng Yu
2018-09-21 15:03 ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 01/27] x86/cpufeatures: Add CPUIDs for Control-flow Enforcement Technology (CET) Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-09-25 16:27   ` Peter Zijlstra
2018-09-25 16:27     ` Peter Zijlstra
2018-09-25 16:29     ` Yu-cheng Yu
2018-09-25 16:29       ` Yu-cheng Yu
2018-09-28 16:51   ` Borislav Petkov
2018-09-28 16:51     ` Borislav Petkov
2018-09-28 16:56     ` Yu-cheng Yu
2018-09-28 16:56       ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 02/27] x86/fpu/xstate: Change some names to separate XSAVES system and user states Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-09-25 16:37   ` Peter Zijlstra
2018-09-25 16:37     ` Peter Zijlstra
2018-10-02 15:29   ` Borislav Petkov
2018-10-02 15:29     ` Borislav Petkov
2018-10-02 16:21     ` Yu-cheng Yu
2018-10-02 16:21       ` Yu-cheng Yu
2018-10-02 16:30       ` Dave Hansen
2018-10-02 16:30         ` Dave Hansen
2018-10-02 16:37         ` Borislav Petkov
2018-10-02 16:37           ` Borislav Petkov
2018-10-02 16:39           ` Dave Hansen
2018-10-02 16:39             ` Dave Hansen
2018-10-02 16:43             ` Yu-cheng Yu
2018-10-02 16:43               ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 03/27] x86/fpu/xstate: Enable XSAVES system states Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-09-25 17:03   ` Peter Zijlstra
2018-09-25 17:03     ` Peter Zijlstra
2018-09-25 17:23     ` Yu-cheng Yu
2018-09-25 17:23       ` Yu-cheng Yu
2018-10-02 17:15   ` Borislav Petkov
2018-10-02 17:15     ` Borislav Petkov
2018-10-04 15:47     ` Yu-cheng Yu
2018-10-04 15:47       ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 04/27] x86/fpu/xstate: Add XSAVES system states for shadow stack Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 05/27] Documentation/x86: Add CET description Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 06/27] x86/cet: Control protection exception handler Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-10-03 10:39   ` Eugene Syromiatnikov
2018-10-03 10:39     ` Eugene Syromiatnikov
2018-10-03 16:11     ` Yu-cheng Yu
2018-10-03 16:11       ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 07/27] x86/cet/shstk: Add Kconfig option for user-mode shadow stack Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 08/27] mm: Introduce VM_SHSTK for shadow stack memory Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 09/27] x86/mm: Change _PAGE_DIRTY to _PAGE_DIRTY_HW Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-10-03 13:38   ` Matthew Wilcox
2018-10-03 13:38     ` Matthew Wilcox
2018-10-03 14:05     ` Dave Hansen
2018-10-03 14:05       ` Dave Hansen
2018-10-03 16:07     ` Yu-cheng Yu
2018-10-03 16:07       ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 10/27] drm/i915/gvt: Update _PAGE_DIRTY to _PAGE_DIRTY_BITS Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-10-03 13:19   ` Eugene Syromiatnikov
2018-10-03 13:19     ` Eugene Syromiatnikov
2018-09-21 15:03 ` [RFC PATCH v4 11/27] x86/mm: Introduce _PAGE_DIRTY_SW Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 12/27] x86/mm: Modify ptep_set_wrprotect and pmdp_set_wrprotect for _PAGE_DIRTY_SW Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 13/27] x86/mm: Shadow stack page fault error checking Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 14/27] mm: Handle shadow stack page fault Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 15/27] mm: Handle THP/HugeTLB " Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 16/27] mm: Update can_follow_write_pte/pmd for shadow stack Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 17/27] mm: Introduce do_mmap_locked() Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 18/27] x86/cet/shstk: User-mode shadow stack support Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-10-03 15:08   ` Eugene Syromiatnikov
2018-10-03 15:08     ` Eugene Syromiatnikov
2018-10-03 15:12     ` Yu-cheng Yu
2018-10-03 15:12       ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 19/27] x86/cet/shstk: Introduce WRUSS instruction Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-10-03  4:15   ` Eugene Syromiatnikov
2018-10-03  4:15     ` Eugene Syromiatnikov
2018-09-21 15:03 ` [RFC PATCH v4 20/27] x86/cet/shstk: Signal handling for shadow stack Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-10-03 14:36   ` Eugene Syromiatnikov
2018-10-03 14:36     ` Eugene Syromiatnikov
2018-10-03 16:46   ` Jann Horn
2018-10-03 16:46     ` Jann Horn
2018-09-21 15:03 ` [RFC PATCH v4 21/27] x86/cet/shstk: ELF header parsing of Shadow Stack Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-10-03 23:27   ` Eugene Syromiatnikov
2018-10-03 23:27     ` Eugene Syromiatnikov
2018-10-09 21:15     ` Yu-cheng Yu
2018-10-09 21:15       ` Yu-cheng Yu
2018-10-15 23:40   ` Kees Cook
2018-10-15 23:40     ` Kees Cook
2018-10-16 17:23     ` Yu-cheng Yu
2018-10-16 17:23       ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 22/27] x86/cet/shstk: Handle thread shadow stack Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 23/27] mm/map: Add Shadow stack pages to memory accounting Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-09-21 16:55   ` Randy Dunlap
2018-09-21 16:55     ` Randy Dunlap
2018-09-21 17:21     ` Yu-cheng Yu
2018-09-21 17:21       ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 24/27] mm/mmap: Create a guard area between VMAs Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-10-03  4:56   ` Eugene Syromiatnikov
2018-10-03  4:56     ` Eugene Syromiatnikov
2018-10-03  5:36     ` Andy Lutomirski
2018-10-03  5:36       ` Andy Lutomirski
2018-10-03 16:00       ` Yu-cheng Yu
2018-10-03 16:00         ` Yu-cheng Yu
2018-10-03 16:18         ` Andy Lutomirski
2018-10-03 16:18           ` Andy Lutomirski
2018-10-03 16:32         ` Eugene Syromiatnikov
2018-10-03 16:32           ` Eugene Syromiatnikov
2018-10-03 16:40           ` Yu-cheng Yu
2018-10-03 16:40             ` Yu-cheng Yu
2018-10-03 16:52           ` Jann Horn
2018-10-03 16:52             ` Jann Horn
2018-10-03 21:21             ` Eugene Syromiatnikov
2018-10-03 21:21               ` Eugene Syromiatnikov
2018-09-21 15:03 ` [RFC PATCH v4 25/27] mm/mmap: Prevent Shadow Stack VMA merges Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-09-21 15:03 ` [RFC PATCH v4 26/27] x86/cet/shstk: Add arch_prctl functions for Shadow Stack Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-10-03 17:57   ` Eugene Syromiatnikov
2018-10-03 17:57     ` Eugene Syromiatnikov
2018-09-21 15:03 ` [RFC PATCH v4 27/27] x86/cet/shstk: Add Shadow Stack instructions to opcode map Yu-cheng Yu
2018-09-21 15:03   ` Yu-cheng Yu
2018-09-21 22:53 ` [RFC PATCH v4 00/27] Control Flow Enforcement: Shadow Stack Dave Hansen
2018-09-21 22:53   ` Dave Hansen
2018-09-24 15:25   ` Yu-cheng Yu
2018-09-24 15:25     ` Yu-cheng Yu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).