linux/arch/powerpc
Naveen N. Rao 46725b17f1 powerpc/signal: Properly handle return value from uprobe_deny_signal()
When a uprobe is installed on an instruction that we currently do not
emulate, we copy the instruction into a xol buffer and single step
that instruction. If that instruction generates a fault, we abort the
single stepping before invoking the signal handler. Once the signal
handler is done, the uprobe trap is hit again since the instruction is
retried and the process repeats.

We use uprobe_deny_signal() to detect if the xol instruction triggered
a signal. If so, we clear TIF_SIGPENDING and set TIF_UPROBE so that the
signal is not handled until after the single stepping is aborted. In
this case, uprobe_deny_signal() returns true and get_signal() ends up
returning 0. However, in do_signal(), we are not looking at the return
value, but depending on ksig.sig for further action, all with an
uninitialized ksig that is not touched in this scenario. Fix the same
by initializing ksig.sig to 0.

Fixes: 129b69df9c ("powerpc: Use get_signal() signal_setup_done()")
Cc: stable@vger.kernel.org # v3.17+
Reported-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2017-11-13 10:53:05 +11:00
..
boot powerpc: dts: acadia: DT fix s/#interrupts-parent/#interrupt-parent/ 2017-10-22 12:08:31 +02:00
configs powerpc/configs: Enable I2C_CHARDEV for pseries and powernv 2017-10-22 12:08:31 +02:00
crypto Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2017-05-02 15:53:46 -07:00
include powerpc/lib: Implement UACCESS_FLUSHCACHE API 2017-11-13 08:00:31 +11:00
kernel powerpc/signal: Properly handle return value from uprobe_deny_signal() 2017-11-13 10:53:05 +11:00
kvm KVM: PPC: Book3S HV: Handle host system reset in guest mode 2017-11-06 16:48:06 +11:00
lib powerpc/lib: Implement UACCESS_FLUSHCACHE API 2017-11-13 08:00:31 +11:00
math-emu Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
mm powerpc/mm/radix: Fix crashes on Power9 DD1 with radix MMU and STRICT_RWX 2017-11-12 23:25:48 +11:00
net bpf: take advantage of stack_depth tracking in powerpc JIT 2017-11-06 16:48:16 +11:00
oprofile powerpc/oprofile: Use setup_timer() helper 2017-10-04 11:28:01 +11:00
perf Merge branch 'fixes' into next 2017-11-10 20:55:03 +11:00
platforms powerpc/powernv/npu: Don't explicitly flush nmmu tlb 2017-11-13 08:00:30 +11:00
purgatory powerpc/asm: Convert .llong directives to .8byte 2017-08-31 14:26:47 +10:00
sysdev Merge branch 'fixes' into next 2017-11-10 20:55:03 +11:00
tools powerpc/64: Tool to check head sections location sanity 2017-05-30 14:59:51 +10:00
xmon powerpc/xmon: Support dumping software pagetables 2017-11-08 22:04:10 +11:00
Kconfig powerpc/lib: Implement UACCESS_FLUSHCACHE API 2017-11-13 08:00:31 +11:00
Kconfig.debug powerpc: Disable the fast-endian switch syscall by default 2017-10-22 12:08:31 +02:00
Makefile Merge branch 'fixes' into next 2017-08-23 22:20:10 +10:00
Makefile.postlink powerpc/64: Tool to check head sections location sanity 2017-05-30 14:59:51 +10:00