summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMasami Hiramatsu <mhiramat@kernel.org>2019-06-19 17:07:29 +0200
committerSteven Rostedt (VMware) <rostedt@goodmis.org>2019-08-31 18:19:38 +0200
commitcb8e7a8d55e052fdcfd1a567305a9a180fb61c57 (patch)
tree75263cadc93c9c147e6bac37a5b2923dc49e586c
parenttracing/probe: Split trace_event related data from trace_probe (diff)
downloadlinux-cb8e7a8d55e052fdcfd1a567305a9a180fb61c57.tar.xz
linux-cb8e7a8d55e052fdcfd1a567305a9a180fb61c57.zip
tracing/dynevent: Delete all matched events
When user gives an event name to delete, delete all matched events instead of the first one. This means if there are several events which have same name but different group (subsystem) name, those are removed if user passed only the event name, e.g. # cat kprobe_events p:group1/testevent _do_fork p:group2/testevent fork_idle # echo -:testevent >> kprobe_events # cat kprobe_events # Link: http://lkml.kernel.org/r/156095684958.28024.16597826267117453638.stgit@devnote2 Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
-rw-r--r--kernel/trace/trace_dynevent.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/kernel/trace/trace_dynevent.c b/kernel/trace/trace_dynevent.c
index fa100ed3b4de..1cc55c50c491 100644
--- a/kernel/trace/trace_dynevent.c
+++ b/kernel/trace/trace_dynevent.c
@@ -61,10 +61,12 @@ int dyn_event_release(int argc, char **argv, struct dyn_event_operations *type)
for_each_dyn_event_safe(pos, n) {
if (type && type != pos->ops)
continue;
- if (pos->ops->match(system, event, pos)) {
- ret = pos->ops->free(pos);
+ if (!pos->ops->match(system, event, pos))
+ continue;
+
+ ret = pos->ops->free(pos);
+ if (ret)
break;
- }
}
mutex_unlock(&event_mutex);