tracing/dynevent: Delete all matched events
authorMasami Hiramatsu <mhiramat@kernel.org>
Wed, 19 Jun 2019 15:07:29 +0000 (00:07 +0900)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Sat, 31 Aug 2019 16:19:38 +0000 (12:19 -0400)
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>
kernel/trace/trace_dynevent.c

index fa100ed3b4de9d128cd05215c972828ee13fbb26..1cc55c50c49182d6c3805668468d286ad091e8f9 100644 (file)
@@ -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);