tracing/function: Fix the return value of ftrace_trace_onoff_callback()
[pandora-kernel.git] / kernel / trace / trace_functions.c
index c9a0b7d..75ef000 100644 (file)
@@ -193,9 +193,11 @@ static void tracing_start_function_trace(void)
 static void tracing_stop_function_trace(void)
 {
        ftrace_function_enabled = 0;
-       /* OK if they are not registered */
-       unregister_ftrace_function(&trace_stack_ops);
-       unregister_ftrace_function(&trace_ops);
+
+       if (func_flags.val & TRACE_FUNC_OPT_STACK)
+               unregister_ftrace_function(&trace_stack_ops);
+       else
+               unregister_ftrace_function(&trace_ops);
 }
 
 static int func_set_flag(u32 old_flags, u32 bit, int set)
@@ -300,8 +302,7 @@ ftrace_trace_onoff_print(struct seq_file *m, unsigned long ip,
        if (count == -1)
                seq_printf(m, ":unlimited\n");
        else
-               seq_printf(m, ":count=%ld", count);
-       seq_putc(m, '\n');
+               seq_printf(m, ":count=%ld\n", count);
 
        return 0;
 }
@@ -362,7 +363,7 @@ ftrace_trace_onoff_callback(char *glob, char *cmd, char *param, int enable)
  out_reg:
        ret = register_ftrace_function_probe(glob, ops, count);
 
-       return ret;
+       return ret < 0 ? ret : 0;
 }
 
 static struct ftrace_func_command ftrace_traceon_cmd = {