twx-linux/arch
Eric W. Biederman ea64d5acc8 signal: Unify and correct copy_siginfo_to_user32
Among the existing architecture specific versions of
copy_siginfo_to_user32 there are several different implementation
problems.  Some architectures fail to handle all of the cases in in
the siginfo union.  Some architectures perform a blind copy of the
siginfo union when the si_code is negative.  A blind copy suggests the
data is expected to be in 32bit siginfo format, which means that
receiving such a signal via signalfd won't work, or that the data is
in 64bit siginfo and the code is copying nonsense to userspace.

Create a single instance of copy_siginfo_to_user32 that all of the
architectures can share, and teach it to handle all of the cases in
the siginfo union correctly, with the assumption that siginfo is
stored internally to the kernel is 64bit siginfo format.

A special case is made for x86 x32 format.  This is needed as presence
of both x32 and ia32 on x86_64 results in two different 32bit signal
formats.  By allowing this small special case there winds up being
exactly one code base that needs to be maintained between all of the
architectures.  Vastly increasing the testing base and the chances of
finding bugs.

As the x86 copy of copy_siginfo_to_user32 the call of the x86
signal_compat_build_tests were moved into sigaction_compat_abi, so
that they will keep running.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
2018-01-15 19:56:20 -06:00
..
alpha bpf: correct broken uapi for BPF_PROG_TYPE_PERF_EVENT program type 2017-12-05 15:02:40 +01:00
arc bpf: correct broken uapi for BPF_PROG_TYPE_PERF_EVENT program type 2017-12-05 15:02:40 +01:00
arm signal/arm: Document conflicts with SI_USER and SIGFPE 2018-01-12 14:21:05 -06:00
arm64 signal: Unify and correct copy_siginfo_to_user32 2018-01-15 19:56:20 -06:00
blackfin signal/blackfin: Remove pointless UID16_SIGINFO_COMPAT_NEEDED 2018-01-15 17:42:36 -06:00
c6x bpf: correct broken uapi for BPF_PROG_TYPE_PERF_EVENT program type 2017-12-05 15:02:40 +01:00
cris bpf: correct broken uapi for BPF_PROG_TYPE_PERF_EVENT program type 2017-12-05 15:02:40 +01:00
frv signal/frv: Move the frv specific si_codes to asm-generic/siginfo.h 2018-01-15 17:42:34 -06:00
h8300 bpf: correct broken uapi for BPF_PROG_TYPE_PERF_EVENT program type 2017-12-05 15:02:40 +01:00
hexagon bpf: correct broken uapi for BPF_PROG_TYPE_PERF_EVENT program type 2017-12-05 15:02:40 +01:00
ia64 signal/ia64: Move the ia64 specific si_codes to asm-generic/siginfo.h 2018-01-15 17:42:33 -06:00
m32r bpf: correct broken uapi for BPF_PROG_TYPE_PERF_EVENT program type 2017-12-05 15:02:40 +01:00
m68k Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-12-08 13:32:44 -08:00
metag signal/metag: Document a conflict with SI_USER with SIGFPE 2018-01-12 14:21:03 -06:00
microblaze bpf: correct broken uapi for BPF_PROG_TYPE_PERF_EVENT program type 2017-12-05 15:02:40 +01:00
mips signal: Unify and correct copy_siginfo_to_user32 2018-01-15 19:56:20 -06:00
mn10300 mn10300/misalignment: Use SIGSEGV SEGV_MAPERR to report a failed user copy 2018-01-12 14:23:36 -06:00
nios2 bpf: correct broken uapi for BPF_PROG_TYPE_PERF_EVENT program type 2017-12-05 15:02:40 +01:00
openrisc signal/openrisc: Fix do_unaligned_access to send the proper signal 2018-01-12 14:20:02 -06:00
parisc signal: Unify and correct copy_siginfo_to_user32 2018-01-15 19:56:20 -06:00
powerpc signal: Unify and correct copy_siginfo_to_user32 2018-01-15 19:56:20 -06:00
riscv RISC-V: Remove unused CONFIG_HVC_RISCV_SBI code 2017-12-11 07:51:09 -08:00
s390 signal: Unify and correct copy_siginfo_to_user32 2018-01-15 19:56:20 -06:00
score bpf: correct broken uapi for BPF_PROG_TYPE_PERF_EVENT program type 2017-12-05 15:02:40 +01:00
sh signal/sh: Ensure si_signo is initialized in do_divide_error 2018-01-05 18:40:39 -06:00
sparc signal: Unify and correct copy_siginfo_to_user32 2018-01-15 19:56:20 -06:00
tile signal: Unify and correct copy_siginfo_to_user32 2018-01-15 19:56:20 -06:00
um Merge branch 'x86-pti-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-12-23 11:53:04 -08:00
unicore32 Merge branch 'x86-pti-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-12-23 11:53:04 -08:00
x86 signal: Unify and correct copy_siginfo_to_user32 2018-01-15 19:56:20 -06:00
xtensa bpf: correct broken uapi for BPF_PROG_TYPE_PERF_EVENT program type 2017-12-05 15:02:40 +01:00
.gitignore
Kconfig bpf: Revert bpf_overrid_function() helper changes. 2017-11-11 18:24:55 +09:00