[patch] i386: extra checks in show_registers()

From: Chuck Ebbert
Date: Sun Jun 11 2006 - 15:19:49 EST


Sometimes thread_info and task_struct get out-of-sync with each
other. Printing task.thread_info in show_registers() can help
spot this. And when task_struct is corrupt then task.comm can
contain garbage, so only print as many characters as it can hold.

Signed-off-by: Chuck Ebbert <76306.1226@xxxxxxxxxxxxxx>

--- 2.6.17-rc6-32-post.orig/arch/i386/kernel/traps.c
+++ 2.6.17-rc6-32-post/arch/i386/kernel/traps.c
@@ -268,8 +268,9 @@ void show_registers(struct pt_regs *regs
regs->esi, regs->edi, regs->ebp, esp);
printk(KERN_EMERG "ds: %04x es: %04x ss: %04x\n",
regs->xds & 0xffff, regs->xes & 0xffff, ss);
- printk(KERN_EMERG "Process %s (pid: %d, threadinfo=%p task=%p)",
- current->comm, current->pid, current_thread_info(), current);
+ printk(KERN_EMERG "Process %.*s (pid: %d, ti=%p task=%p task.ti=%p)",
+ TASK_COMM_LEN, current->comm, current->pid,
+ current_thread_info(), current, current->thread_info);
/*
* When in-kernel, we also print out the stack and code at the
* time of the fault..
--
Chuck
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/