From cc5585a60d6c094bb15a1a748174d96699d296c4 Mon Sep 17 00:00:00 2001 From: Luis Claudio R. Goncalves Date: Fri, 3 Jul 2009 13:16:33 -0500 Subject: [PATCH] trace: function profiler band-aid commit dea2d9a0550f1a8da36a380567b61de9d9a83208 in tip. Kernel Panic when stressing ftrace function_profiler https://bugzilla.redhat.com/show_bug.cgi?id=500156 This patch does not fix the whole issue but removes a few probable spots where the panic could originate from. [root@void ~]# while true > do echo "starting new test..." > ./function_profiler.sh sleep 2 > /dev/null > dmesg -c > ./function_profiler.sh ls -la > /dev/null > dmesg -c; > done starting new test... starting new test... ... Kernel panic - not syncing: Fatal exception Signed-off-by: Luis Claudio R. Goncalves Signed-off-by: Thomas Gleixner Signed-off-by: Paul Gortmaker --- kernel/trace/ftrace.c | 3 ++- kernel/trace/trace_functions_graph.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 2404b59..a05e769 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -392,7 +392,8 @@ static int function_stat_show(struct seq_file *m, void *v) #ifdef CONFIG_FUNCTION_GRAPH_TRACER seq_printf(m, " "); avg = rec->time; - do_div(avg, rec->counter); + if (rec->counter) + do_div(avg, rec->counter); mutex_lock(&mutex); trace_seq_init(&s); diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c index 9aed1a5..974bc47 100644 --- a/kernel/trace/trace_functions_graph.c +++ b/kernel/trace/trace_functions_graph.c @@ -628,7 +628,7 @@ trace_print_graph_duration(unsigned long long duration, struct trace_seq *s) int ret, len; int i; - sprintf(msecs_str, "%lu", (unsigned long) duration); + snprintf(msecs_str, sizeof(msecs_str), "%lu", (unsigned long) duration); /* Print msecs */ ret = trace_seq_printf(s, "%s", msecs_str); -- 1.7.0.4