From: Peter Collingbourne <pcc@google.com> To: Catalin Marinas <catalin.marinas@arm.com>, Evgenii Stepanov <eugenis@google.com>, Kostya Serebryany <kcc@google.com>, Vincenzo Frascino <vincenzo.frascino@arm.com>, Dave Martin <Dave.Martin@arm.com>, Will Deacon <will@kernel.org>, Oleg Nesterov <oleg@redhat.com>, "Eric W. Biederman" <ebiederm@xmission.com>, "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com> Cc: Peter Collingbourne <pcc@google.com>, Linux ARM <linux-arm-kernel@lists.infradead.org>, Kevin Brodsky <kevin.brodsky@arm.com>, Andrey Konovalov <andreyknvl@google.com>, Richard Henderson <rth@twiddle.net>, linux-parisc@vger.kernel.org, David Spickett <david.spickett@linaro.org> Subject: [PATCH v10 0/7] arm64: expose FAR_EL1 tag bits in siginfo Date: Fri, 21 Aug 2020 22:10:10 -0700 [thread overview] Message-ID: <cover.1598072840.git.pcc@google.com> (raw) 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
WARNING: multiple messages have this Message-ID (diff)
From: Peter Collingbourne <pcc@google.com> To: Catalin Marinas <catalin.marinas@arm.com>, Evgenii Stepanov <eugenis@google.com>, Kostya Serebryany <kcc@google.com>, Vincenzo Frascino <vincenzo.frascino@arm.com>, Dave Martin <Dave.Martin@arm.com>, Will Deacon <will@kernel.org>, Oleg Nesterov <oleg@redhat.com>, "Eric W. Biederman" <ebiederm@xmission.com>, "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com> Cc: linux-parisc@vger.kernel.org, Andrey Konovalov <andreyknvl@google.com>, Kevin Brodsky <kevin.brodsky@arm.com>, David Spickett <david.spickett@linaro.org>, Peter Collingbourne <pcc@google.com>, Linux ARM <linux-arm-kernel@lists.infradead.org>, Richard Henderson <rth@twiddle.net> Subject: [PATCH v10 0/7] arm64: expose FAR_EL1 tag bits in siginfo Date: Fri, 21 Aug 2020 22:10:10 -0700 [thread overview] Message-ID: <cover.1598072840.git.pcc@google.com> (raw) 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 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next reply other threads:[~2020-08-22 5:10 UTC|newest] Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-08-22 5:10 Peter Collingbourne [this message] 2020-08-22 5:10 ` [PATCH v10 0/7] arm64: expose FAR_EL1 tag bits in siginfo 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
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.1598072840.git.pcc@google.com \ --to=pcc@google.com \ --cc=Dave.Martin@arm.com \ --cc=James.Bottomley@HansenPartnership.com \ --cc=andreyknvl@google.com \ --cc=catalin.marinas@arm.com \ --cc=david.spickett@linaro.org \ --cc=ebiederm@xmission.com \ --cc=eugenis@google.com \ --cc=kcc@google.com \ --cc=kevin.brodsky@arm.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-parisc@vger.kernel.org \ --cc=oleg@redhat.com \ --cc=rth@twiddle.net \ --cc=vincenzo.frascino@arm.com \ --cc=will@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: linkBe 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.