diff options
author | Steven Rostedt (Red Hat) <rostedt@goodmis.org> | 2014-09-12 14:21:13 -0400 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2014-09-12 20:48:43 -0400 |
commit | 84bde62ca4b49701190dbd953c1e04024860c1f5 (patch) | |
tree | 5926044131cf96bd75d3c7a8efa2ac7d2d5b26fd | |
parent | fb5a613b4f310d6d520daf295547ab35b0ac58a3 (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.c | 15 |
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 | ||