powerpc/ptrace: Remove BUG_ON when full register set not available
authorMike Wolf <mjw@linux.vnet.ibm.com>
Mon, 21 Mar 2011 00:14:53 +0000 (11:14 +1100)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 21 Mar 2011 00:18:14 +0000 (11:18 +1100)
commita71f5d5d279375205009a4be56a3cf6682921292
treefde8b1e5958317268c9ce3b616cd4ee8d390502d
parentd6a2639b887fcf90b422caccca4aee216bd1120e
powerpc/ptrace: Remove BUG_ON when full register set not available

In some cases during a threaded core dump not all the threads will have
a full register set. This happens when the signal causing the core dump
races with a thread exiting.  The race happens when the exiting thread
has entered the kernel for the last time before the signal arrives, but
doesn't get far enough through the exit code to avoid being included
in the core dump.

So we get a thread included in the core dump which is never going to go
out to userspace again and only has a partial register set recorded

Normally we would catch each thread as it is about to go into userspace
and capture the full register set then.

However, this exiting thread is never going to go out to userspace
again, so we have no way to capture its full register set.  It doesn't
really matter, though, as this is a thread which is effectively
already dead.

So instead of hitting a BUG() in this case (a really bad choice of
action in the first place), we use a poison value for the register
values.

[BenH]: Some cosmetic/stylistic changes and fix build on ppc32

Signed-off-by: Mike Wolf <mjw@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/include/asm/ptrace.h
arch/powerpc/kernel/ptrace.c