* [RESEND][PATCH] Fix BUG_ON() reporting in real mode on PPC
@ 2016-02-18 2:48 Balbir Singh
2016-02-29 11:05 ` [RESEND] " Michael Ellerman
0 siblings, 1 reply; 2+ messages in thread
From: Balbir Singh @ 2016-02-18 2:48 UTC (permalink / raw)
To: mpe, linuxppc-dev; +Cc: paulus, Balbir Singh
Changelog:
Don't use REGION_ID, breaks on some platforms
Don't blindly add PAGE_OFFSET to bugaddr
I ran into this issue while debugging an early boot problem.
The system hit a BUG_ON() but report bug failed to print the
line number and file name. The reason being that the system
was running in real mode and report_bug() searches for
addresses in the PAGE_OFFSET+ region
Suggested-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Balbir Singh <bsingharora@gmail.com>
---
arch/powerpc/kernel/traps.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
index b6becc7..4e5c11d 100644
--- a/arch/powerpc/kernel/traps.c
+++ b/arch/powerpc/kernel/traps.c
@@ -1148,6 +1148,7 @@ void __kprobes program_check_exception(struct pt_regs *regs)
goto bail;
}
if (reason & REASON_TRAP) {
+ unsigned long bugaddr;
/* Debugger is first in line to stop recursive faults in
* rcu_lock, notify_die, or atomic_notifier_call_chain */
if (debugger_bpt(regs))
@@ -1158,8 +1159,15 @@ void __kprobes program_check_exception(struct pt_regs *regs)
== NOTIFY_STOP)
goto bail;
+ bugaddr = regs->nip;
+ /*
+ * Fixup bugaddr for BUG_ON() in real mode
+ */
+ if (!is_kernel_addr(bugaddr) && !(regs->msr & MSR_IR))
+ bugaddr += PAGE_OFFSET;
+
if (!(regs->msr & MSR_PR) && /* not user-mode */
- report_bug(regs->nip, regs) == BUG_TRAP_TYPE_WARN) {
+ report_bug(bugaddr, regs) == BUG_TRAP_TYPE_WARN) {
regs->nip += 4;
goto bail;
}
--
2.5.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [RESEND] Fix BUG_ON() reporting in real mode on PPC
2016-02-18 2:48 [RESEND][PATCH] Fix BUG_ON() reporting in real mode on PPC Balbir Singh
@ 2016-02-29 11:05 ` Michael Ellerman
0 siblings, 0 replies; 2+ messages in thread
From: Michael Ellerman @ 2016-02-29 11:05 UTC (permalink / raw)
To: Balbir Singh, linuxppc-dev; +Cc: paulus
On Thu, 2016-18-02 at 02:48:01 UTC, Balbir Singh wrote:
> Changelog:
> Don't use REGION_ID, breaks on some platforms
> Don't blindly add PAGE_OFFSET to bugaddr
>
> I ran into this issue while debugging an early boot problem.
> The system hit a BUG_ON() but report bug failed to print the
> line number and file name. The reason being that the system
> was running in real mode and report_bug() searches for
> addresses in the PAGE_OFFSET+ region
>
> Suggested-by: Paul Mackerras <paulus@samba.org>
> Signed-off-by: Balbir Singh <bsingharora@gmail.com>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/a4c3f909b4d9bb9430bf42ad58
cheers
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-02-29 11:05 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-02-18 2:48 [RESEND][PATCH] Fix BUG_ON() reporting in real mode on PPC Balbir Singh
2016-02-29 11:05 ` [RESEND] " Michael Ellerman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).