]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ftrace: Set callback to ftrace_stub when no ops are registered
authorSteven Rostedt (Red Hat) <rostedt@goodmis.org>
Wed, 10 Sep 2014 14:42:46 +0000 (10:42 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Wed, 10 Sep 2014 14:48:18 +0000 (10:48 -0400)
The clean up that adds the helper function ftrace_ops_get_func()
caused the default function to not change when DYNAMIC_FTRACE was not
set and no ftrace_ops were registered. Although static tracing is
not very useful (not having DYNAMIC_FTRACE set), it is still supported
and we don't want to break it.

Clean up the if statement even more to specifically have the default
function call ftrace_stub when no ftrace_ops are registered. This
fixes the small bug for static tracing as well as makes the code a
bit more understandable.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
kernel/trace/ftrace.c

index dabf734f909c3df5c0085a53a77a5bb57798d2fc..708aea493d969abddaefeb7a5528bb717000c3f4 100644 (file)
@@ -253,18 +253,25 @@ static void update_ftrace_function(void)
 {
        ftrace_func_t func;
 
+       /*
+        * Prepare the ftrace_ops that the arch callback will use.
+        * If there's only one ftrace_ops registered, the ftrace_ops_list
+        * will point to the ops we want.
+        */
+       set_function_trace_op = ftrace_ops_list;
+
+       /* If there's no ftrace_ops registered, just call the stub function */
+       if (ftrace_ops_list == &ftrace_list_end) {
+               func = ftrace_stub;
+
        /*
         * If we are at the end of the list and this ops is
         * recursion safe and not dynamic and the arch supports passing ops,
         * then have the mcount trampoline call the function directly.
         */
-       if (ftrace_ops_list == &ftrace_list_end ||
-           (ftrace_ops_list->next == &ftrace_list_end)) {
-
-               /* Set the ftrace_ops that the arch callback uses */
-               set_function_trace_op = ftrace_ops_list;
-
+       } else if (ftrace_ops_list->next == &ftrace_list_end) {
                func = ftrace_ops_get_func(ftrace_ops_list);
+
        } else {
                /* Just use the default ftrace_ops */
                set_function_trace_op = &ftrace_list_end;