tracing: Fix a race in function profile
authorLi Zefan <lizf@cn.fujitsu.com>
Mon, 23 Aug 2010 08:50:12 +0000 (16:50 +0800)
committerSteven Rostedt <rostedt@goodmis.org>
Tue, 31 Aug 2010 20:46:23 +0000 (16:46 -0400)
commit3aaba20f26f58843e8f20611e5c0b1c06954310f
treead15d7aa21af465ddf6091eb490d84312089f245
parentfa66f07aa1f0950e1dc78b7ab39728b3f8aa77a1
tracing: Fix a race in function profile

While we are reading trace_stat/functionX and someone just
disabled function_profile at that time, we can trigger this:

divide error: 0000 [#1] PREEMPT SMP
...
EIP is at function_stat_show+0x90/0x230
...

This fix just takes the ftrace_profile_lock and checks if
rec->counter is 0. If it's 0, we know the profile buffer
has been reset.

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Cc: stable@kernel.org
LKML-Reference: <4C723644.4040708@cn.fujitsu.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
kernel/trace/ftrace.c