All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/12] arm64: ARMv8.5-A: Branch Target Identification support
@ 2019-12-11 15:41 ` Mark Brown
  0 siblings, 0 replies; 84+ messages in thread
From: Mark Brown @ 2019-12-11 15:41 UTC (permalink / raw)
  To: Catalin Marinas, Will Deacon
  Cc: Paul Elliott, Peter Zijlstra, Yu-cheng Yu, Amit Kachhap,
	Vincenzo Frascino, Marc Zyngier, Eugene Syromiatnikov,
	Szabolcs Nagy, H.J. Lu, Andrew Jones, Kees Cook, Arnd Bergmann,
	Jann Horn, Richard Henderson, Kristina Martšenko,
	Thomas Gleixner, Florian Weimer, Sudakshina Das,
	linux-arm-kernel, linux-kernel, linux-arch, Mark Brown

This patch implements support for ARMv8.5-A Branch Target Identification
(BTI), which is a control flow integrity protection feature introduced
as part of the ARMv8.5-A extensions.

This is mainly a repost based on v5.5-rc1.

Changes:

v4:
 - Dropped patch fixing existing documentation as it has already been merged.
 - Convert WARN_ON() to WARN_ON_ONCE() in "ELF: Add ELF program property
   parsing support".
 - Added display of guarded pages to ptdump.
 - Updated for conversion of exception handling from assembler to C.

Notes:

 * GCC 9 can compile backwards-compatible BTI-enabled code with
   -mbranch-protection=bti or -mbranch-protection=standard.

 * Binutils trunk supports the new ELF note, but this wasn't in a release
   the last time I posted this series.  (The situation _might_ have changed
   in the meantime...)

   Creation of a BTI-enabled binary requires _everything_ linked in to
   be BTI-enabled.  For now ld --force-bti can be used to override this,
   but some things may break until the required C library support is in
   place.

   There is no straightforward way to mark a .s file as BTI-enabled:
   scraping the output from gcc -S works as a quick hack for now.

   readelf -n can be used to examing the program properties in an ELF
   file.

 * Runtime mmap() and mprotect() can be used to enable BTI on a
   page-by-page basis using the new PROT_BTI, but the code in the
   affected pages still needs to be written or compiled to contain the
   appopriate BTI landing pads.

Dave Martin (11):
  ELF: UAPI and Kconfig additions for ELF program properties
  ELF: Add ELF program property parsing support
  mm: Reserve asm-generic prot flag 0x10 for arch use
  arm64: Basic Branch Target Identification support
  elf: Allow arch to tweak initial mmap prot flags
  arm64: elf: Enable BTI at exec based on ELF program properties
  arm64: BTI: Decode BYTPE bits when printing PSTATE
  arm64: unify native/compat instruction skipping
  arm64: traps: Shuffle code to eliminate forward declarations
  arm64: BTI: Reset BTYPE when skipping emulated instructions
  KVM: arm64: BTI: Reset BTYPE when skipping emulated instructions

Mark Brown (1):
  arm64: mm: Display guarded pages in ptdump

 Documentation/arm64/cpu-feature-registers.rst |   2 +
 Documentation/arm64/elf_hwcaps.rst            |   4 +
 arch/arm64/Kconfig                            |  29 ++++
 arch/arm64/include/asm/cpucaps.h              |   3 +-
 arch/arm64/include/asm/cpufeature.h           |   6 +
 arch/arm64/include/asm/elf.h                  |  50 ++++++
 arch/arm64/include/asm/esr.h                  |   2 +-
 arch/arm64/include/asm/exception.h            |   1 +
 arch/arm64/include/asm/hwcap.h                |   1 +
 arch/arm64/include/asm/kvm_emulate.h          |   6 +-
 arch/arm64/include/asm/mman.h                 |  37 +++++
 arch/arm64/include/asm/pgtable-hwdef.h        |   1 +
 arch/arm64/include/asm/pgtable.h              |   2 +-
 arch/arm64/include/asm/ptrace.h               |   8 +
 arch/arm64/include/asm/sysreg.h               |   4 +
 arch/arm64/include/uapi/asm/hwcap.h           |   1 +
 arch/arm64/include/uapi/asm/mman.h            |   9 ++
 arch/arm64/include/uapi/asm/ptrace.h          |   1 +
 arch/arm64/kernel/cpufeature.c                |  33 ++++
 arch/arm64/kernel/cpuinfo.c                   |   1 +
 arch/arm64/kernel/entry-common.c              |  11 ++
 arch/arm64/kernel/process.c                   |  36 ++++-
 arch/arm64/kernel/ptrace.c                    |   2 +-
 arch/arm64/kernel/signal.c                    |  16 ++
 arch/arm64/kernel/syscall.c                   |  18 +++
 arch/arm64/kernel/traps.c                     | 127 +++++++--------
 arch/arm64/mm/dump.c                          |   5 +
 fs/Kconfig.binfmt                             |   6 +
 fs/binfmt_elf.c                               | 145 +++++++++++++++++-
 fs/compat_binfmt_elf.c                        |   4 +
 include/linux/elf.h                           |  43 ++++++
 include/linux/mm.h                            |   3 +
 include/uapi/asm-generic/mman-common.h        |   1 +
 include/uapi/linux/elf.h                      |  11 ++
 34 files changed, 554 insertions(+), 75 deletions(-)
 create mode 100644 arch/arm64/include/asm/mman.h
 create mode 100644 arch/arm64/include/uapi/asm/mman.h

-- 
2.20.1


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

end of thread, other threads:[~2020-01-14 17:37 UTC | newest]

Thread overview: 84+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-11 15:41 [PATCH v4 00/12] arm64: ARMv8.5-A: Branch Target Identification support Mark Brown
2019-12-11 15:41 ` Mark Brown
2019-12-11 15:41 ` Mark Brown
2019-12-11 15:41 ` [PATCH v4 01/12] ELF: UAPI and Kconfig additions for ELF program properties Mark Brown
2019-12-11 15:41   ` Mark Brown
2019-12-11 15:41   ` Mark Brown
2020-01-14 15:03   ` Catalin Marinas
2020-01-14 15:03     ` Catalin Marinas
2020-01-14 15:03     ` Catalin Marinas
2019-12-11 15:41 ` [PATCH v4 02/12] ELF: Add ELF program property parsing support Mark Brown
2019-12-11 15:41   ` Mark Brown
2019-12-11 15:41   ` Mark Brown
2020-01-14 16:34   ` Catalin Marinas
2020-01-14 16:34     ` Catalin Marinas
2020-01-14 16:34     ` Catalin Marinas
2020-01-14 17:28     ` Mark Brown
2020-01-14 17:28       ` Mark Brown
2020-01-14 17:28       ` Mark Brown
2019-12-11 15:41 ` [PATCH v4 03/12] mm: Reserve asm-generic prot flag 0x10 for arch use Mark Brown
2019-12-11 15:41   ` Mark Brown
2019-12-11 15:41   ` Mark Brown
2019-12-12 10:48   ` Catalin Marinas
2019-12-12 10:48     ` Catalin Marinas
2019-12-12 10:48     ` Catalin Marinas
2019-12-12 16:16     ` Mark Brown
2019-12-12 16:16       ` Mark Brown
2019-12-12 16:16       ` Mark Brown
2019-12-11 15:41 ` [PATCH v4 04/12] arm64: Basic Branch Target Identification support Mark Brown
2019-12-11 15:41   ` Mark Brown
2019-12-11 15:41   ` Mark Brown
2020-01-10 18:28   ` Catalin Marinas
2020-01-10 18:28     ` Catalin Marinas
2020-01-10 18:28     ` Catalin Marinas
2020-01-13 14:00     ` Mark Brown
2020-01-13 14:00       ` Mark Brown
2020-01-13 14:00       ` Mark Brown
2019-12-11 15:41 ` [PATCH v4 05/12] elf: Allow arch to tweak initial mmap prot flags Mark Brown
2019-12-11 15:41   ` Mark Brown
2019-12-11 15:41   ` Mark Brown
2020-01-14 16:38   ` Catalin Marinas
2020-01-14 16:38     ` Catalin Marinas
2020-01-14 16:38     ` Catalin Marinas
2019-12-11 15:42 ` [PATCH v4 06/12] arm64: elf: Enable BTI at exec based on ELF program properties Mark Brown
2019-12-11 15:42   ` Mark Brown
2019-12-11 15:42   ` Mark Brown
2020-01-14 17:33   ` Catalin Marinas
2020-01-14 17:33     ` Catalin Marinas
2020-01-14 17:33     ` Catalin Marinas
2019-12-11 15:42 ` [PATCH v4 07/12] arm64: BTI: Decode BYTPE bits when printing PSTATE Mark Brown
2019-12-11 15:42   ` Mark Brown
2019-12-11 15:42   ` Mark Brown
2020-01-14 17:34   ` Catalin Marinas
2020-01-14 17:34     ` Catalin Marinas
2020-01-14 17:34     ` Catalin Marinas
2019-12-11 15:42 ` [PATCH v4 08/12] arm64: unify native/compat instruction skipping Mark Brown
2019-12-11 15:42   ` Mark Brown
2019-12-11 15:42   ` Mark Brown
2020-01-13 16:43   ` Catalin Marinas
2020-01-13 16:43     ` Catalin Marinas
2020-01-13 16:43     ` Catalin Marinas
2019-12-11 15:42 ` [PATCH v4 09/12] arm64: traps: Shuffle code to eliminate forward declarations Mark Brown
2019-12-11 15:42   ` Mark Brown
2019-12-11 15:42   ` Mark Brown
2020-01-14 17:35   ` Catalin Marinas
2020-01-14 17:35     ` Catalin Marinas
2020-01-14 17:35     ` Catalin Marinas
2019-12-11 15:42 ` [PATCH v4 10/12] arm64: BTI: Reset BTYPE when skipping emulated instructions Mark Brown
2019-12-11 15:42   ` Mark Brown
2019-12-11 15:42   ` Mark Brown
2020-01-14 17:36   ` Catalin Marinas
2020-01-14 17:36     ` Catalin Marinas
2020-01-14 17:36     ` Catalin Marinas
2019-12-11 15:42 ` [PATCH v4 11/12] KVM: " Mark Brown
2019-12-11 15:42   ` Mark Brown
2019-12-11 15:42   ` Mark Brown
2020-01-14 17:36   ` Catalin Marinas
2020-01-14 17:36     ` Catalin Marinas
2020-01-14 17:36     ` Catalin Marinas
2019-12-11 15:42 ` [PATCH v4 12/12] arm64: mm: Display guarded pages in ptdump Mark Brown
2019-12-11 15:42   ` Mark Brown
2019-12-11 15:42   ` Mark Brown
2020-01-14 17:37   ` Catalin Marinas
2020-01-14 17:37     ` Catalin Marinas
2020-01-14 17:37     ` Catalin Marinas

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.