Well with 7 patches instead of 3 that was a little more than I thought I was going to send. However that does demonstrate what I am thinking, and I think most of the changes are reasonable at this point. I am very curious how synchronous this all is, because if this code is truly synchronous updating signalfd to handle this class of signal doesn't really make sense. If the code is not synchronous using force_sig is questionable. Eric W. Biederman (7): siginfo: Move si_trapno inside the union inside _si_fault signal: Implement SIL_FAULT_TRAPNO signal: Use dedicated helpers to send signals with si_trapno set signal: Remove __ARCH_SI_TRAPNO signal: Rename SIL_PERF_EVENT SIL_FAULT_PERF_EVENT for consistency signal: Factor force_sig_perf out of perf_sigtrap signal: Deliver all of the perf_data in si_perf arch/alpha/include/uapi/asm/siginfo.h | 2 - arch/alpha/kernel/osf_sys.c | 2 +- arch/alpha/kernel/signal.c | 4 +- arch/alpha/kernel/traps.c | 24 ++++---- arch/alpha/mm/fault.c | 4 +- arch/mips/include/uapi/asm/siginfo.h | 2 - arch/sparc/include/uapi/asm/siginfo.h | 3 - arch/sparc/kernel/process_64.c | 2 +- arch/sparc/kernel/sys_sparc_32.c | 2 +- arch/sparc/kernel/sys_sparc_64.c | 2 +- arch/sparc/kernel/traps_32.c | 22 +++---- arch/sparc/kernel/traps_64.c | 44 ++++++-------- arch/sparc/kernel/unaligned_32.c | 2 +- arch/sparc/mm/fault_32.c | 2 +- arch/sparc/mm/fault_64.c | 2 +- fs/signalfd.c | 13 ++-- include/linux/compat.h | 9 +-- include/linux/sched/signal.h | 13 ++-- include/linux/signal.h | 3 +- include/uapi/asm-generic/siginfo.h | 11 ++-- include/uapi/linux/signalfd.h | 4 +- kernel/events/core.c | 11 +--- kernel/signal.c | 108 ++++++++++++++++++++++------------ 23 files changed, 149 insertions(+), 142 deletions(-)