During the merge window an issue with si_perf and the siginfo ABI came up. The alpha and sparc siginfo structure layout had changed with the addition of SIGTRAP TRAP_PERF and the new field si_perf. The reason only alpha and sparc were affected is that they are the only architectures that use si_trapno. Looking deeper it was discovered that si_trapno is used for only a few select signals on alpha and sparc, and that none of the other _sigfault fields past si_addr are used at all. Which means technically no regression on alpha and sparc. While the alignment concerns might be dismissed the abuse of si_errno by SIGTRAP TRAP_PERF does have the potential to cause regressions in existing userspace. While we still have time before userspace starts using and depending on the new definition siginfo for SIGTRAP TRAP_PERF this set of changes cleans up siginfo_t. - The si_trapno field is demoted from magic alpha and sparc status and made an ordinary union member of the _sigfault member of siginfo_t. Without moving it of course. - si_perf is replaced with si_perf_data and si_perf_type ending the abuse of si_errno. - Unnecessary additions to signalfd_siginfo are removed. v3: https://lkml.kernel.org/r/m1tuni8ano.fsf_-_@xxxxxxxxxxxxxxxxx v2: https://lkml.kernel.org/r/m14kfjh8et.fsf_-_@xxxxxxxxxxxxxxxxx v1: https://lkml.kernel.org/r/m1zgxfs7zq.fsf_-_@xxxxxxxxxxxxxxxxx This version drops the tests and fine grained handling of si_trapno on alpha and sparc (replaced assuming si_trapno is valid for all but the faults that defined different data). Eric W. Biederman (5): siginfo: Move si_trapno inside the union inside _si_fault signal: Implement SIL_FAULT_TRAPNO signal: Factor force_sig_perf out of perf_sigtrap signal: Deliver all of the siginfo perf data in _perf signalfd: Remove SIL_PERF_EVENT fields from signalfd_siginfo arch/m68k/kernel/signal.c | 3 +- arch/x86/kernel/signal_compat.c | 9 +++- fs/signalfd.c | 23 ++++----- include/linux/compat.h | 10 ++-- include/linux/sched/signal.h | 1 + include/linux/signal.h | 1 + include/uapi/asm-generic/siginfo.h | 15 +++--- include/uapi/linux/perf_event.h | 2 +- include/uapi/linux/signalfd.h | 4 +- kernel/events/core.c | 11 +--- kernel/signal.c | 59 +++++++++++++--------- .../selftests/perf_events/sigtrap_threads.c | 14 ++--- 12 files changed, 79 insertions(+), 73 deletions(-)