[PATCH v15 0/6] arm64: expose FAR_EL1 tag bits in siginfo
Peter Collingbourne
pcc at google.com
Thu Nov 12 21:46:01 EST 2020
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, introduce a flag in
sigaction.sa_flags, SA_EXPOSE_TAGBITS, and only expose the tag bits
there if the signal handler has this flag set.
In order to allow userspace to determine whether SA_EXPOSE_TAGBITS
is supported, we first introduce a mechanism for userspace to detect
kernel support for SA_* flags.
The series can be viewed on Gerrit here:
https://linux-review.googlesource.com/id/Ia8876bad8c798e0a32df7c2ce1256c4771c81446
[1] http://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html
Helge Deller (1):
parisc: Drop parisc special case for __sighandler_t
Peter Collingbourne (5):
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
arm64: expose FAR_EL1 tag bits in siginfo
Documentation/arm64/tagged-pointers.rst | 25 ++++++---
arch/alpha/include/uapi/asm/signal.h | 14 -----
arch/arm/include/asm/signal.h | 2 +
arch/arm/include/uapi/asm/signal.h | 27 ++--------
arch/arm64/include/asm/exception.h | 2 +-
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 | 68 ++++++++++++++-----------
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 | 34 +------------
arch/powerpc/include/uapi/asm/signal.h | 24 ---------
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 | 7 ---
arch/xtensa/include/uapi/asm/signal.h | 24 ---------
include/linux/signal.h | 14 +++++
include/linux/signal_types.h | 12 +++++
include/uapi/asm-generic/signal-defs.h | 57 +++++++++++++++++++++
include/uapi/asm-generic/signal.h | 29 -----------
kernel/signal.c | 39 +++++++++++---
30 files changed, 206 insertions(+), 366 deletions(-)
--
2.29.2.299.gdc1121823c-goog
More information about the linux-arm-kernel
mailing list