aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>2013-05-09 01:44:14 -0400
committerSteven Rostedt <rostedt@goodmis.org>2013-05-09 11:26:01 -0400
commita5b85bd1557209b4ef18a8cf07e60a1ca3132468 (patch)
treef1c0c60e26e7f10e6e05cca9af1639bf651a7bf4
parent2228768885e0b92c0f7b276cc61b8974e7aed724 (diff)
tracing: Don't succeed if event_enable_func did not register anything
Return 0 instead of the number of activated ftrace function probes if event_enable_func succeeded and return an error code if it failed or did not register any functions. But it currently returns the number of registered functions and if it didn't register anything, it returns 0, but that is considered success. This also fixes the return value. As if it succeeds, it returns the number of functions that were enabled, which is returned back to the user in ftrace_regex_write (the write() return code). If only one function is enabled, then the return code of the write is one, and this can confuse the user program in thinking it only wrote 1 byte. Link: http://lkml.kernel.org/r/20130509054413.30398.55650.stgit@mhiramat-M0-7522 Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Tom Zanussi <tom.zanussi@intel.com> Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> [ Rewrote change log to reflect that this fixes two bugs - SR ] Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r--kernel/trace/trace_events.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
index 53582e982e51..44ac83614c3d 100644
--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
@@ -2061,8 +2061,11 @@ event_enable_func(struct ftrace_hash *hash,
2061 if (ret < 0) 2061 if (ret < 0)
2062 goto out_put; 2062 goto out_put;
2063 ret = register_ftrace_function_probe(glob, ops, data); 2063 ret = register_ftrace_function_probe(glob, ops, data);
2064 if (!ret) 2064 if (!ret) {
2065 ret = -ENOENT;
2065 goto out_disable; 2066 goto out_disable;
2067 } else
2068 ret = 0;
2066 out: 2069 out:
2067 mutex_unlock(&event_mutex); 2070 mutex_unlock(&event_mutex);
2068 return ret; 2071 return ret;