diff options
Diffstat (limited to 'kernel/trace/trace_functions_graph.c')
-rw-r--r-- | kernel/trace/trace_functions_graph.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c index f2252296607..616b135c9eb 100644 --- a/kernel/trace/trace_functions_graph.c +++ b/kernel/trace/trace_functions_graph.c | |||
@@ -215,7 +215,8 @@ int trace_graph_entry(struct ftrace_graph_ent *trace) | |||
215 | if (!ftrace_trace_task(current)) | 215 | if (!ftrace_trace_task(current)) |
216 | return 0; | 216 | return 0; |
217 | 217 | ||
218 | if (!ftrace_graph_addr(trace->func)) | 218 | /* trace it when it is-nested-in or is a function enabled. */ |
219 | if (!(trace->depth || ftrace_graph_addr(trace->func))) | ||
219 | return 0; | 220 | return 0; |
220 | 221 | ||
221 | local_irq_save(flags); | 222 | local_irq_save(flags); |
@@ -228,9 +229,6 @@ int trace_graph_entry(struct ftrace_graph_ent *trace) | |||
228 | } else { | 229 | } else { |
229 | ret = 0; | 230 | ret = 0; |
230 | } | 231 | } |
231 | /* Only do the atomic if it is not already set */ | ||
232 | if (!test_tsk_trace_graph(current)) | ||
233 | set_tsk_trace_graph(current); | ||
234 | 232 | ||
235 | atomic_dec(&data->disabled); | 233 | atomic_dec(&data->disabled); |
236 | local_irq_restore(flags); | 234 | local_irq_restore(flags); |
@@ -278,8 +276,6 @@ void trace_graph_return(struct ftrace_graph_ret *trace) | |||
278 | pc = preempt_count(); | 276 | pc = preempt_count(); |
279 | __trace_graph_return(tr, trace, flags, pc); | 277 | __trace_graph_return(tr, trace, flags, pc); |
280 | } | 278 | } |
281 | if (!trace->depth) | ||
282 | clear_tsk_trace_graph(current); | ||
283 | atomic_dec(&data->disabled); | 279 | atomic_dec(&data->disabled); |
284 | local_irq_restore(flags); | 280 | local_irq_restore(flags); |
285 | } | 281 | } |