diff options
author | Steven Rostedt (Red Hat) <rostedt@goodmis.org> | 2014-09-12 18:21:13 (GMT) |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2014-09-13 00:48:43 (GMT) |
commit | 84bde62ca4b49701190dbd953c1e04024860c1f5 (patch) | |
tree | 5926044131cf96bd75d3c7a8efa2ac7d2d5b26fd /kernel/trace | |
parent | fb5a613b4f310d6d520daf295547ab35b0ac58a3 (diff) | |
download | linux-84bde62ca4b49701190dbd953c1e04024860c1f5.tar.xz |
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>
Diffstat (limited to 'kernel/trace')
-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 d325a1e..fb186b9 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) ftrace_run_update_code(command); + /* + * If there's no more ops registered with ftrace, run a + * sanity check to make sure all rec flags are cleared. + */ + if (ftrace_ops_list == &ftrace_list_end) { + struct ftrace_page *pg; + struct dyn_ftrace *rec; + + do_for_each_ftrace_rec(pg, rec) { + if (FTRACE_WARN_ON_ONCE(rec->flags)) + pr_warn(" %pS flags:%lx\n", + (void *)rec->ip, rec->flags); + } while_for_each_ftrace_rec(); + } + ops->old_hash.filter_hash = NULL; ops->old_hash.notrace_hash = NULL; |