• Mike Wolf's avatar
    powerpc/ptrace: Remove BUG_ON when full register set not available · a71f5d5d
    Mike Wolf authored
    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: default avatarMike Wolf <mjw@linux.vnet.ibm.com>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    a71f5d5d
ptrace.c 44.1 KB