summaryrefslogtreecommitdiffstats
path: root/arch/arm64/kernel/traps.c
diff options
context:
space:
mode:
authorDave P Martin <Dave.Martin@arm.com>2015-07-24 16:37:49 +0100
committerWill Deacon <will.deacon@arm.com>2015-07-27 11:08:42 +0100
commita4653228a0f8d0a4a76d03a2dd15beaf6e78c22b (patch)
treefca8a7b0ad800409d6a84f67b5800261de0bc9bd /arch/arm64/kernel/traps.c
parent9fb7410f955f7a62c1f882ca8f9ffd4525907e28 (diff)
downloadop-kernel-dev-a4653228a0f8d0a4a76d03a2dd15beaf6e78c22b.zip
op-kernel-dev-a4653228a0f8d0a4a76d03a2dd15beaf6e78c22b.tar.gz
arm64/BUG: Show explicit backtrace for WARNs
The generic slowpath WARN implementation prints a backtrace, but the report_bug() based implementation does not, opting to print the registers instead which is generally not as useful. Ideally, report_bug() should be fixed to make the behaviour more consistent, but in the meantime this patch generates a backtrace directly from the arm64 backend instead so that this functionality is not lost with the migration to report_bug(). As a side-effect, the backtrace will be outside the oops end marker, but that's hard to avoid without modifying generic code. This patch can go away if report_bug() grows the ability in the future to generate a backtrace directly or call an arch hook at the appropriate time. Signed-off-by: Dave Martin <Dave.Martin@arm.com> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/arm64/kernel/traps.c')
-rw-r--r--arch/arm64/kernel/traps.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c
index 824ba5a..f93aae5 100644
--- a/arch/arm64/kernel/traps.c
+++ b/arch/arm64/kernel/traps.c
@@ -494,6 +494,8 @@ static int bug_handler(struct pt_regs *regs, unsigned int esr)
break;
case BUG_TRAP_TYPE_WARN:
+ /* Ideally, report_bug() should backtrace for us... but no. */
+ dump_backtrace(regs, NULL);
break;
default:
OpenPOWER on IntegriCloud