From 6f44b20ee9b4130345c189c0c90ef6604bcd8005 Mon Sep 17 00:00:00 2001 From: Nicholas Piggin Date: Tue, 8 Nov 2016 23:14:44 +1100 Subject: 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 Signed-off-by: Michael Ellerman --- arch/powerpc/kernel/traps.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'arch/powerpc') diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index 91d278c9ab28..13ca8b687e88 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c @@ -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); -- cgit v1.2.3