linux/arch/powerpc
Amanieu d'Antras 52124831a3 signal: fix information leak in copy_siginfo_from_user32
commit 3c00cb5e68 upstream.

This function can leak kernel stack data when the user siginfo_t has a
positive si_code value.  The top 16 bits of si_code descibe which fields
in the siginfo_t union are active, but they are treated inconsistently
between copy_siginfo_from_user32, copy_siginfo_to_user32 and
copy_siginfo_to_user.

copy_siginfo_from_user32 is called from rt_sigqueueinfo and
rt_tgsigqueueinfo in which the user has full control overthe top 16 bits
of si_code.

This fixes the following information leaks:
x86:   8 bytes leaked when sending a signal from a 32-bit process to
       itself. This leak grows to 16 bytes if the process uses x32.
       (si_code = __SI_CHLD)
x86:   100 bytes leaked when sending a signal from a 32-bit process to
       a 64-bit process. (si_code = -1)
sparc: 4 bytes leaked when sending a signal from a 32-bit process to a
       64-bit process. (si_code = any)

parsic and s390 have similar bugs, but they are not vulnerable because
rt_[tg]sigqueueinfo have checks that prevent sending a positive si_code
to a different process.  These bugs are also fixed for consistency.

Signed-off-by: Amanieu d'Antras <amanieu@gmail.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Russell King <rmk@arm.linux.org.uk>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Chris Metcalf <cmetcalf@ezchip.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2015-08-16 20:52:26 -07:00
..
boot powerpc: Remove the celleb support 2015-04-07 17:15:13 +10:00
configs powerpc: Remove the celleb support 2015-04-07 17:15:13 +10:00
crypto crypto: powerpc - move files to fix build error 2015-03-09 21:06:19 +11:00
include Revert "powerpc/tm: Abort syscalls in active transactions" 2015-04-30 15:24:58 +10:00
kernel signal: fix information leak in copy_siginfo_from_user32 2015-08-16 20:52:26 -07:00
kvm KVM: PPC: Book3S HV: Fix list traversal in error case 2015-05-10 17:26:05 +02:00
lib powerpc: Export __spin_yield 2015-04-21 15:21:28 +02:00
math-emu powerpc: Correct emulated mtfsf instruction 2014-04-07 10:33:11 +10:00
mm powerpc/mm: Return NULL for not present hugetlb page 2015-05-12 11:04:29 +10:00
net ppc: bpf: Add SKF_AD_CPU for ppc32 2015-02-20 15:19:43 -05:00
oprofile powerpc/oprofile: reduce mmap_sem hold for exe_file 2015-04-17 09:04:11 -04:00
perf powerpc/perf: Fix book3s kernel to userspace backtraces 2015-07-10 09:49:35 -07:00
platforms powerpc/pseries: Correct cpu affinity for dlpar added cpus 2015-05-01 13:47:24 +10:00
sysdev powerpc: dart_iommu: Remove check for controller_ops == NULL case 2015-04-11 20:49:19 +10:00
xmon powerpc updates for 3.20 2015-02-11 18:15:38 -08:00
Kconfig powerpc updates for 4.1 2015-04-16 13:53:32 -05:00
Kconfig.debug powerpc: Remove the celleb support 2015-04-07 17:15:13 +10:00
Makefile powerpc: Convert relocs_check to a shell script using grep 2015-03-23 14:47:39 +11:00
relocs_check.sh powerpc: Convert relocs_check to a shell script using grep 2015-03-23 14:47:39 +11:00