2013-05-08 21:01:51

by Alex Thorlton

[permalink] [raw]
Subject: [patch 2/2] panic: add cpu/pid to warn_slowpath_common in WARNING printk()s

These patches fix up issues with interspersed output from multiple
simultaneous calls to warn or dump_stack on multi-cpu systems.
References: <[email protected]>
Content-Disposition: inline; filename=add-cpu-pid-warn.patch

This patch adds in the cpu/pid that called WARN() so that the stack
traces can be matched up with the WARNING messages.

Cc: Andrew Morton <[email protected]>
Cc: Stephen Boyd <[email protected]>
Cc: Vikram Mulukutla <[email protected]>
Cc: Rusty Russell <[email protected]>
Cc: Tejun Heo <[email protected]>
Reviewed-by: Robin Holt <[email protected]>
Signed-off-by: Alex Thorlton <[email protected]>
---
kernel/panic.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

--- linux.orig/kernel/panic.c
+++ linux/kernel/panic.c
@@ -399,8 +399,9 @@ struct slowpath_args {
static void warn_slowpath_common(const char *file, int line, void *caller,
unsigned taint, struct slowpath_args *args)
{
- printk(KERN_WARNING "------------[ cut here ]------------\n");
- printk(KERN_WARNING "WARNING: at %s:%d %pS()\n", file, line, caller);
+ pr_warn("------------[ cut here ]------------\n");
+ pr_warn("WARNING: CPU: %d PID: %d at %s:%d %pS()\n", '
+ raw_smp_processor_id(), current->pid, file, line, caller);

if (args)
vprintk(args->fmt, args->args);