[for-nex][PATCH 1/2] ftrace: Add sanity check when unregistering last ftrace_ops

Steven Rostedt
2014-09-13T14:51:10Z

[-- Attachment #1: 0001-ftrace-Add-sanity-check-when-unregistering-last-ftra.patch --]
[-- Type: text/plain, Size: 1146 bytes --]

From: "Steven Rostedt (Red Hat)" <rostedt@goodmis.org>

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>
---
kernel/trace/ftrace.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)

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)

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;

--
2.0.1