signal: Deliver all of the siginfo perf data in _perf
authorEric W. Biederman <ebiederm@xmission.com>
Sun, 2 May 2021 22:28:31 +0000 (17:28 -0500)
committerEric W. Biederman <ebiederm@xmission.com>
Tue, 18 May 2021 21:20:54 +0000 (16:20 -0500)
commit0683b53197b55343a166f1507086823030809a19
tree19e83bcb655352a82cad92ec948df125d67737b1
parentaf5eeab7e8e8c2f0fad10e4ab8cc8092012a2d5b
signal: Deliver all of the siginfo perf data in _perf

Don't abuse si_errno and deliver all of the perf data in _perf member
of siginfo_t.

Note: The data field in the perf data structures in a u64 to allow a
pointer to be encoded without needed to implement a 32bit and 64bit
version of the same structure.  There already exists a 32bit and 64bit
versions siginfo_t, and the 32bit version can not include a 64bit
member as it only has 32bit alignment.  So unsigned long is used in
siginfo_t instead of a u64 as unsigned long can encode a pointer on
all architectures linux supports.

v1: https://lkml.kernel.org/r/m11rarqqx2.fsf_-_@fess.ebiederm.org
v2: https://lkml.kernel.org/r/20210503203814.25487-10-ebiederm@xmission.com
v3: https://lkml.kernel.org/r/20210505141101.11519-11-ebiederm@xmission.com
Link: https://lkml.kernel.org/r/20210517195748.8880-4-ebiederm@xmission.com
Reviewed-by: Marco Elver <elver@google.com>
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
arch/m68k/kernel/signal.c
arch/x86/kernel/signal_compat.c
fs/signalfd.c
include/linux/compat.h
include/uapi/asm-generic/siginfo.h
include/uapi/linux/perf_event.h
include/uapi/linux/signalfd.h
kernel/signal.c
tools/testing/selftests/perf_events/sigtrap_threads.c