Skip to content

Commit

Permalink
tracing/probe: Fix to allow user to enable events on unloaded modules
Browse files Browse the repository at this point in the history
Fix to allow user to enable probe events on unloaded modules.

This operations was allowed before commit 60d53e2 ("tracing/probe:
Split trace_event related data from trace_probe"), because if users
need to probe module init functions, they have to enable those probe
events before loading module.

Link: http://lkml.kernel.org/r/156879693733.31056.9331322616994665167.stgit@devnote2

Cc: stable@vger.kernel.org
Fixes: 60d53e2 ("tracing/probe: Split trace_event related data from trace_probe")
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
  • Loading branch information
Masami Hiramatsu authored and Steven Rostedt (VMware) committed Sep 19, 2019
1 parent 604e354 commit 44d00dc
Showing 1 changed file with 5 additions and 12 deletions.
17 changes: 5 additions & 12 deletions kernel/trace/trace_kprobe.c
Original file line number Diff line number Diff line change
Expand Up @@ -371,31 +371,24 @@ static int enable_trace_kprobe(struct trace_event_call *call,
if (enabled)
return 0;

enabled = false;
list_for_each_entry(pos, trace_probe_probe_list(tp), list) {
tk = container_of(pos, struct trace_kprobe, tp);
if (trace_kprobe_has_gone(tk))
continue;
ret = __enable_trace_kprobe(tk);
if (ret) {
if (enabled) {
__disable_trace_kprobe(tp);
enabled = false;
}
if (ret)
break;
}
enabled = true;
}

if (!enabled) {
/* No probe is enabled. Roll back */
if (ret) {
/* Failed to enable one of them. Roll back all */
if (enabled)
__disable_trace_kprobe(tp);
if (file)
trace_probe_remove_file(tp, file);
else
trace_probe_clear_flag(tp, TP_FLAG_PROFILE);
if (!ret)
/* Since all probes are gone, this is not available */
ret = -EADDRNOTAVAIL;
}

return ret;
Expand Down

0 comments on commit 44d00dc

Please sign in to comment.