Message ID | 1455754804-16459-1-git-send-email-bsingharora@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Hi Balbir, [auto build test ERROR on powerpc/next] [also build test ERROR on v4.5-rc4 next-20160217] [if your patch is applied to the wrong git tree, please drop us a note to help improving the system] url: https://github.com/0day-ci/linux/commits/Balbir-Singh/Fix-BUG_ON-reporting-in-real-mode-on-PPC/20160218-082259 base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next config: powerpc-allnoconfig (attached as .config) reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=powerpc All errors (new ones prefixed by >>): arch/powerpc/kernel/traps.c: In function 'program_check_exception': >> arch/powerpc/kernel/traps.c:1163:8: error: implicit declaration of function 'REGION_ID' [-Werror=implicit-function-declaration] if ((REGION_ID(bugaddr) == 0) && !(regs->msr & MSR_IR)) ^ cc1: all warnings being treated as errors vim +/REGION_ID +1163 arch/powerpc/kernel/traps.c 1157 /* trap exception */ 1158 if (notify_die(DIE_BPT, "breakpoint", regs, 5, 5, SIGTRAP) 1159 == NOTIFY_STOP) 1160 goto bail; 1161 1162 bugaddr = regs->nip; > 1163 if ((REGION_ID(bugaddr) == 0) && !(regs->msr & MSR_IR)) 1164 bugaddr += PAGE_OFFSET; 1165 1166 if (!(regs->msr & MSR_PR) && /* not user-mode */ --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index b6becc7..4de4fe7 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,12 @@ void __kprobes program_check_exception(struct pt_regs *regs) == NOTIFY_STOP) goto bail; + bugaddr = regs->nip; + if ((REGION_ID(bugaddr) == 0) && !(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; }
Resending to remove whitespace issues created by email client Changelog: Don't add PAGE_OFFSET blindly, check if REGION_ID is 0 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 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)