All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v10 0/7] arm64: expose FAR_EL1 tag bits in siginfo
@ 2020-08-22  5:10 ` Peter Collingbourne
  0 siblings, 0 replies; 59+ messages in thread
From: Peter Collingbourne @ 2020-08-22  5:10 UTC (permalink / raw)
  To: Catalin Marinas, Evgenii Stepanov, Kostya Serebryany,
	Vincenzo Frascino, Dave Martin, Will Deacon, Oleg Nesterov,
	Eric W. Biederman, James E.J. Bottomley
  Cc: Peter Collingbourne, Linux ARM, Kevin Brodsky, Andrey Konovalov,
	Richard Henderson, linux-parisc, David Spickett

The kernel currently clears the tag bits (i.e. bits 56-63) in the fault
address exposed via siginfo.si_addr and sigcontext.fault_address. However,
the tag bits may be needed by tools in order to accurately diagnose
memory errors, such as HWASan [1] or future tools based on the Memory
Tagging Extension (MTE).

We should not stop clearing these bits in the existing fault address
fields, because there may be existing userspace applications that are
expecting the tag bits to be cleared. Instead, create a new pair of
union fields in siginfo._sigfault, and store the tag bits of FAR_EL1
there, together with a mask specifying which bits are valid.

However, one does not simply add fields to siginfo, especially since
userspace would have no way to detect that they are present and valid.
Therefore, the first five patches in this series introduce a mechanism
for userspace to detect the presence of our new siginfo fields,
and the last patch uses it to advertise the presence of said fields.

The series can be viewed on Gerrit here:
https://linux-review.googlesource.com/q/Ia8876bad8c798e0a32df7c2ce1256c4771c81446

[1] http://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html

Peter Collingbourne (7):
  parisc: start using signal-defs.h
  arch: move SA_* definitions to generic headers
  signal: clear non-uapi flag bits when passing/returning sa_flags
  signal: define the SA_UNSUPPORTED bit in sa_flags
  signal: deduplicate code dealing with common _sigfault fields
  signal: define the field siginfo.si_xflags
  arm64: expose FAR_EL1 tag bits in siginfo

 Documentation/arm64/tagged-pointers.rst    |  21 +++-
 arch/alpha/include/uapi/asm/signal.h       |  14 ---
 arch/arm/include/asm/signal.h              |   2 +
 arch/arm/include/uapi/asm/signal.h         |  28 +----
 arch/arm64/include/asm/exception.h         |   2 +-
 arch/arm64/include/asm/signal.h            |  17 +++
 arch/arm64/include/asm/system_misc.h       |   2 +-
 arch/arm64/include/asm/traps.h             |   6 +-
 arch/arm64/kernel/debug-monitors.c         |   5 +-
 arch/arm64/kernel/entry-common.c           |   2 -
 arch/arm64/kernel/ptrace.c                 |   7 +-
 arch/arm64/kernel/sys_compat.c             |   5 +-
 arch/arm64/kernel/traps.c                  |  29 ++---
 arch/arm64/mm/fault.c                      |  59 +++++-----
 arch/h8300/include/uapi/asm/signal.h       |  24 ----
 arch/ia64/include/uapi/asm/signal.h        |  24 ----
 arch/m68k/include/uapi/asm/signal.h        |  24 ----
 arch/mips/include/uapi/asm/signal.h        |  12 --
 arch/parisc/include/asm/signal.h           |   2 +
 arch/parisc/include/uapi/asm/signal.h      |  22 +---
 arch/powerpc/include/uapi/asm/signal.h     |  24 ----
 arch/powerpc/platforms/powernv/vas-fault.c |   1 +
 arch/s390/include/uapi/asm/signal.h        |  24 ----
 arch/sparc/include/uapi/asm/signal.h       |   4 +-
 arch/x86/include/uapi/asm/signal.h         |  24 ----
 arch/x86/kernel/signal_compat.c            |  11 +-
 arch/xtensa/include/uapi/asm/signal.h      |  24 ----
 include/linux/compat.h                     |   4 +
 include/linux/signal.h                     |  21 ++++
 include/linux/signal_types.h               |  12 ++
 include/uapi/asm-generic/siginfo.h         |  14 +++
 include/uapi/asm-generic/signal-defs.h     |  64 ++++++++++
 include/uapi/asm-generic/signal.h          |  29 -----
 include/uapi/linux/ptrace.h                |   2 +
 kernel/ptrace.c                            |  29 +++++
 kernel/signal.c                            | 130 +++++++++++----------
 36 files changed, 315 insertions(+), 409 deletions(-)
 create mode 100644 arch/arm64/include/asm/signal.h

-- 
2.28.0.297.g1956fa8f8d-goog


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

end of thread, other threads:[~2020-10-12 14:16 UTC | newest]

Thread overview: 59+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-22  5:10 [PATCH v10 0/7] arm64: expose FAR_EL1 tag bits in siginfo Peter Collingbourne
2020-08-22  5:10 ` Peter Collingbourne
2020-08-22  5:10 ` [PATCH v10 1/7] parisc: start using signal-defs.h Peter Collingbourne
2020-08-22  5:10   ` Peter Collingbourne
2020-08-30 17:07   ` Helge Deller
2020-10-03  1:22     ` Peter Collingbourne
2020-10-03 10:04       ` Helge Deller
2020-09-08 15:12   ` Dave Martin
2020-09-08 15:12     ` Dave Martin
2020-08-22  5:10 ` [PATCH v10 2/7] arch: move SA_* definitions to generic headers Peter Collingbourne
2020-08-22  5:10   ` Peter Collingbourne
2020-09-08 15:12   ` Dave Martin
2020-09-08 15:12     ` Dave Martin
2020-10-03  1:14     ` Peter Collingbourne
2020-10-03  1:14       ` Peter Collingbourne
2020-10-05 11:06       ` Dave Martin
2020-10-05 11:06         ` Dave Martin
2020-08-22  5:10 ` [PATCH v10 3/7] signal: clear non-uapi flag bits when passing/returning sa_flags Peter Collingbourne
2020-08-22  5:10   ` Peter Collingbourne
2020-09-08 15:12   ` Dave Martin
2020-09-08 15:12     ` Dave Martin
2020-10-08  2:23     ` Peter Collingbourne
2020-10-08  2:23       ` Peter Collingbourne
2020-08-22  5:10 ` [PATCH v10 4/7] signal: define the SA_UNSUPPORTED bit in sa_flags Peter Collingbourne
2020-08-22  5:10   ` Peter Collingbourne
2020-09-08 15:13   ` Dave Martin
2020-09-08 15:13     ` Dave Martin
2020-10-08  2:21     ` Peter Collingbourne
2020-10-08  2:21       ` Peter Collingbourne
2020-10-12 13:37       ` Dave Martin
2020-10-12 13:37         ` Dave Martin
2020-08-22  5:10 ` [PATCH v10 5/7] signal: deduplicate code dealing with common _sigfault fields Peter Collingbourne
2020-08-22  5:10   ` Peter Collingbourne
2020-09-08 15:13   ` Dave Martin
2020-09-08 15:13     ` Dave Martin
2020-10-06  5:07     ` Peter Collingbourne
2020-10-06  5:07       ` Peter Collingbourne
2020-10-07  8:56       ` Dave Martin
2020-10-07  8:56         ` Dave Martin
2020-08-22  5:10 ` [PATCH v10 6/7] signal: define the field siginfo.si_xflags Peter Collingbourne
2020-08-22  5:10   ` Peter Collingbourne
2020-09-08 15:13   ` Dave Martin
2020-09-08 15:13     ` Dave Martin
2020-10-08  2:11     ` Peter Collingbourne
2020-10-08  2:11       ` Peter Collingbourne
2020-10-09 18:19       ` Peter Collingbourne
2020-10-09 18:19         ` Peter Collingbourne
2020-10-12 13:57         ` Dave Martin
2020-10-12 13:57           ` Dave Martin
2020-10-12 13:55       ` Dave Martin
2020-10-12 13:55         ` Dave Martin
2020-08-22  5:10 ` [PATCH v10 7/7] arm64: expose FAR_EL1 tag bits in siginfo Peter Collingbourne
2020-08-22  5:10   ` Peter Collingbourne
2020-09-08 15:13   ` Dave Martin
2020-09-08 15:13     ` Dave Martin
2020-10-08  2:54     ` Peter Collingbourne
2020-10-08  2:54       ` Peter Collingbourne
2020-10-12 14:14       ` Dave Martin
2020-10-12 14:14         ` Dave Martin

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.