ftrace: Add sanity check when unregistering last ftrace_ops
authorSteven Rostedt (Red Hat) <rostedt@goodmis.org>
Fri, 12 Sep 2014 18:21:13 +0000 (14:21 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Sat, 13 Sep 2014 00:48:43 +0000 (20:48 -0400)
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

index d325a1e765548e60d51cb5a9010ca3d988da1ed3..fb186b9ddf519159d866fcaa8fc187328820f2bf 100644 (file)
@@ -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;