powerpc: Fix graceful debugger recovery

When exiting xmon with 'x' (exit and recover), oops_begin bails
out immediately, but die then calls __die() and oops_end(), which
cause a lot of bad things to happen.

If the debugger was attached then went to graceful recovery, exit
from die() immediately.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
Nicholas Piggin 2016-11-08 23:14:44 +11:00 committed by Michael Ellerman
parent 43c9127d94
commit 6f44b20ee9

View File

@ -122,9 +122,6 @@ static unsigned long oops_begin(struct pt_regs *regs)
int cpu;
unsigned long flags;
if (debugger(regs))
return 1;
oops_enter();
/* racy, but better than risking deadlock. */
@ -227,8 +224,12 @@ NOKPROBE_SYMBOL(__die);
void die(const char *str, struct pt_regs *regs, long err)
{
unsigned long flags = oops_begin(regs);
unsigned long flags;
if (debugger(regs))
return;
flags = oops_begin(regs);
if (__die(str, regs, err))
err = 0;
oops_end(flags, regs, err);