|
@@ -828,6 +828,8 @@ static inline void
|
|
|
show_signal_msg(struct pt_regs *regs, unsigned long error_code,
|
|
|
unsigned long address, struct task_struct *tsk)
|
|
|
{
|
|
|
+ const char *loglvl = task_pid_nr(tsk) > 1 ? KERN_INFO : KERN_EMERG;
|
|
|
+
|
|
|
if (!unhandled_signal(tsk, SIGSEGV))
|
|
|
return;
|
|
|
|
|
@@ -835,13 +837,14 @@ show_signal_msg(struct pt_regs *regs, unsigned long error_code,
|
|
|
return;
|
|
|
|
|
|
printk("%s%s[%d]: segfault at %lx ip %px sp %px error %lx",
|
|
|
- task_pid_nr(tsk) > 1 ? KERN_INFO : KERN_EMERG,
|
|
|
- tsk->comm, task_pid_nr(tsk), address,
|
|
|
+ loglvl, tsk->comm, task_pid_nr(tsk), address,
|
|
|
(void *)regs->ip, (void *)regs->sp, error_code);
|
|
|
|
|
|
print_vma_addr(KERN_CONT " in ", regs->ip);
|
|
|
|
|
|
printk(KERN_CONT "\n");
|
|
|
+
|
|
|
+ show_opcodes((u8 *)regs->ip, loglvl);
|
|
|
}
|
|
|
|
|
|
static void
|