Messages in this thread Patch in this message | | | Date | Sat, 15 Nov 2008 02:37:44 +0100 | From | Frederic Weisbecker <> | Subject | [PATCH] tracing/function-return-tracer: Add a barrier to ensure return stack index is incremented in memory |
| |
Impact: Fix possible race condition in ftrace function return tracer
This fixes a possible race condition if index incrementation is not immediately flushed in memory.
Thanks for Andi Kleen and Steven Rostedt for pointing out this issue and give me this solution.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Andi Kleen <andi@firstfloor.org> --- arch/x86/kernel/ftrace.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c index fe83273..db25236 100644 --- a/arch/x86/kernel/ftrace.c +++ b/arch/x86/kernel/ftrace.c @@ -56,6 +56,7 @@ static int push_return_trace(unsigned long ret, unsigned long long time, return -EBUSY; index = ++ti->curr_ret_stack; + barrier(); ti->ret_stack[index].ret = ret; ti->ret_stack[index].func = func; ti->ret_stack[index].calltime = time; -- 1.5.2.5
| |