All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] tracing: fix invalid function_graph entry
@ 2009-07-28 12:11 Lai Jiangshan
  2009-07-28 15:33 ` Frederic Weisbecker
  2009-08-04 12:12 ` [tip:tracing/urgent] tracing: Fix " tip-bot for Lai Jiangshan
  0 siblings, 2 replies; 3+ messages in thread
From: Lai Jiangshan @ 2009-07-28 12:11 UTC (permalink / raw)
  To: Frederic Weisbecker, Steven Rostedt, Ingo Molnar, LKML


print_graph_entry() consumes current event, if this event
is the last event in the page, the ring_buffer may reuse
the page. It will become invalid.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
---
diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c
index abf7c4a..02102a3 100644
--- a/kernel/trace/trace_functions_graph.c
+++ b/kernel/trace/trace_functions_graph.c
@@ -835,9 +835,16 @@ print_graph_function(struct trace_iterator *iter)
 
 	switch (entry->type) {
 	case TRACE_GRAPH_ENT: {
-		struct ftrace_graph_ent_entry *field;
+		/*
+		 * print_graph_entry() may consume the current event,
+		 * thus @field may become invalid, so we need to save it.
+		 * sizeof(struct ftrace_graph_ent_entry) is very small,
+		 * it is safely saved at the stack.
+		 */
+		struct ftrace_graph_ent_entry *field, saved;
 		trace_assign_type(field, entry);
-		return print_graph_entry(field, s, iter);
+		saved = *field;
+		return print_graph_entry(&saved, s, iter);
 	}
 	case TRACE_GRAPH_RET: {
 		struct ftrace_graph_ret_entry *field;


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2009-08-04 12:13 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-28 12:11 [PATCH] tracing: fix invalid function_graph entry Lai Jiangshan
2009-07-28 15:33 ` Frederic Weisbecker
2009-08-04 12:12 ` [tip:tracing/urgent] tracing: Fix " tip-bot for Lai Jiangshan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.