summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@armlinux.org.uk>2019-01-29 09:07:58 -0500
committerRussell King <rmk+kernel@armlinux.org.uk>2019-06-20 17:29:23 -0400
commitbafeb7a0d9213e64a0e09d149b52abeb0c8798b5 (patch)
treed6f42ad7cfe287bc76b578725a0a3794535b8533
parentcd6c84d8f0cdc911df435bb075ba22ce3c605b07 (diff)
ARM: add "8<--- cut here ---" to kernel dumps
Add a "8<--- cut here ---" marker to kernel dumps to help users cut the dump at the right place when emailing list, rather than cutting off the first line which gives the reason for the dump. Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
-rw-r--r--arch/arm/kernel/traps.c1
-rw-r--r--arch/arm/mm/fault.c3
2 files changed, 4 insertions, 0 deletions
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
index 33af097c454b..30bffdeac3ac 100644
--- a/arch/arm/kernel/traps.c
+++ b/arch/arm/kernel/traps.c
@@ -725,6 +725,7 @@ baddataabort(int code, unsigned long instr, struct pt_regs *regs)
725 725
726#ifdef CONFIG_DEBUG_USER 726#ifdef CONFIG_DEBUG_USER
727 if (user_debug & UDBG_BADABORT) { 727 if (user_debug & UDBG_BADABORT) {
728 pr_err("8<--- cut here ---\n");
728 pr_err("[%d] %s: bad data abort: code %d instr 0x%08lx\n", 729 pr_err("[%d] %s: bad data abort: code %d instr 0x%08lx\n",
729 task_pid_nr(current), current->comm, code, instr); 730 task_pid_nr(current), current->comm, code, instr);
730 dump_instr(KERN_ERR, regs); 731 dump_instr(KERN_ERR, regs);
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
index 58f69fa07df9..743a9e0a1fda 100644
--- a/arch/arm/mm/fault.c
+++ b/arch/arm/mm/fault.c
@@ -142,6 +142,7 @@ __do_kernel_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr,
142 * No handler, we'll have to terminate things with extreme prejudice. 142 * No handler, we'll have to terminate things with extreme prejudice.
143 */ 143 */
144 bust_spinlocks(1); 144 bust_spinlocks(1);
145 pr_alert("8<--- cut here ---\n");
145 pr_alert("Unable to handle kernel %s at virtual address %08lx\n", 146 pr_alert("Unable to handle kernel %s at virtual address %08lx\n",
146 (addr < PAGE_SIZE) ? "NULL pointer dereference" : 147 (addr < PAGE_SIZE) ? "NULL pointer dereference" :
147 "paging request", addr); 148 "paging request", addr);
@@ -167,6 +168,7 @@ __do_user_fault(struct task_struct *tsk, unsigned long addr,
167#ifdef CONFIG_DEBUG_USER 168#ifdef CONFIG_DEBUG_USER
168 if (((user_debug & UDBG_SEGV) && (sig == SIGSEGV)) || 169 if (((user_debug & UDBG_SEGV) && (sig == SIGSEGV)) ||
169 ((user_debug & UDBG_BUS) && (sig == SIGBUS))) { 170 ((user_debug & UDBG_BUS) && (sig == SIGBUS))) {
171 pr_err("8<--- cut here ---\n");
170 printk(KERN_DEBUG "%s: unhandled page fault (%d) at 0x%08lx, code 0x%03x\n", 172 printk(KERN_DEBUG "%s: unhandled page fault (%d) at 0x%08lx, code 0x%03x\n",
171 tsk->comm, sig, addr, fsr); 173 tsk->comm, sig, addr, fsr);
172 show_pte(tsk->mm, addr); 174 show_pte(tsk->mm, addr);
@@ -556,6 +558,7 @@ do_DataAbort(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
556 if (!inf->fn(addr, fsr & ~FSR_LNX_PF, regs)) 558 if (!inf->fn(addr, fsr & ~FSR_LNX_PF, regs))
557 return; 559 return;
558 560
561 pr_alert("8<--- cut here ---\n");
559 pr_alert("Unhandled fault: %s (0x%03x) at 0x%08lx\n", 562 pr_alert("Unhandled fault: %s (0x%03x) at 0x%08lx\n",
560 inf->name, fsr, addr); 563 inf->name, fsr, addr);
561 show_pte(current->mm, addr); 564 show_pte(current->mm, addr);