aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt (Red Hat) <rostedt@goodmis.org>2014-09-12 14:21:13 -0400
committerSteven Rostedt <rostedt@goodmis.org>2014-09-12 20:48:43 -0400
commit84bde62ca4b49701190dbd953c1e04024860c1f5 (patch)
tree5926044131cf96bd75d3c7a8efa2ac7d2d5b26fd
parentfb5a613b4f310d6d520daf295547ab35b0ac58a3 (diff)
ftrace: Add sanity check when unregistering last ftrace_ops
When the last ftrace_ops is unregistered, all the function records should have a zeroed flags value. Make sure that is the case when the last ftrace_ops is unregistered. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r--kernel/trace/ftrace.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index d325a1e76554..fb186b9ddf51 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -2416,6 +2416,21 @@ static int ftrace_shutdown(struct ftrace_ops *ops, int command)
2416 2416
2417 ftrace_run_update_code(command); 2417 ftrace_run_update_code(command);
2418 2418
2419 /*
2420 * If there's no more ops registered with ftrace, run a
2421 * sanity check to make sure all rec flags are cleared.
2422 */
2423 if (ftrace_ops_list == &ftrace_list_end) {
2424 struct ftrace_page *pg;
2425 struct dyn_ftrace *rec;
2426
2427 do_for_each_ftrace_rec(pg, rec) {
2428 if (FTRACE_WARN_ON_ONCE(rec->flags))
2429 pr_warn(" %pS flags:%lx\n",
2430 (void *)rec->ip, rec->flags);
2431 } while_for_each_ftrace_rec();
2432 }
2433
2419 ops->old_hash.filter_hash = NULL; 2434 ops->old_hash.filter_hash = NULL;
2420 ops->old_hash.notrace_hash = NULL; 2435 ops->old_hash.notrace_hash = NULL;
2421 2436