tracing: Have system enable return error if one of the events fail
authorSteven Rostedt (Red Hat) <rostedt@goodmis.org>
Mon, 28 Nov 2016 18:54:57 +0000 (13:54 -0500)
committerSteven Rostedt <rostedt@goodmis.org>
Fri, 9 Dec 2016 14:15:41 +0000 (09:15 -0500)
If one of the events within a system fails to enable when "1" is written
to the system "enable" file, it should return an error. Note, some events
may still be enabled, but the user should know that something did go wrong.

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

index d35fc2b0d3042c8222b4d5aed6ba47ddad9ee60c..93116549a284366a7670bdd82316b049ec72412e 100644 (file)
@@ -702,6 +702,7 @@ __ftrace_set_clr_event_nolock(struct trace_array *tr, const char *match,
        struct trace_event_call *call;
        const char *name;
        int ret = -EINVAL;
+       int eret = 0;
 
        list_for_each_entry(file, &tr->events, list) {
 
@@ -725,9 +726,17 @@ __ftrace_set_clr_event_nolock(struct trace_array *tr, const char *match,
                if (event && strcmp(event, name) != 0)
                        continue;
 
-               ftrace_event_enable_disable(file, set);
+               ret = ftrace_event_enable_disable(file, set);
 
-               ret = 0;
+               /*
+                * Save the first error and return that. Some events
+                * may still have been enabled, but let the user
+                * know that something went wrong.
+                */
+               if (ret && !eret)
+                       eret = ret;
+
+               ret = eret;
        }
 
        return ret;