Em Fri, Feb 28, 2020 at 04:57:42PM +0900, Masami Hiramatsu escreveu: > Fix to delete multiple probe event with filter correctly. > > When we put an event with multiple probes, perf-probe fails > to delete with filters. This comes from a failure to list > up the event name because of overwrapping its name. > > To fix this issue, skip to list up the event which has > same name. > > Without this patch: > # perf probe -l \* > probe_perf:map__map_ip (on perf_sample__fprintf_brstackoff:21@ > probe_perf:map__map_ip (on perf_sample__fprintf_brstackoff:25@ > probe_perf:map__map_ip (on append_inlines:12@util/machine.c in > probe_perf:map__map_ip (on unwind_entry:19@util/machine.c in / > probe_perf:map__map_ip (on map__map_ip@util/map.h in /home/mhi > probe_perf:map__map_ip (on map__map_ip@util/map.h in /home/mhi > # perf probe -d \* > "*" does not hit any event. > Error: Failed to delete events. Reason: No such file or directory (Code: -2) > > With this: > # perf probe -d \* > Removed event: probe_perf:map__map_ip Thanks, tested and applied to perf/urgent. - Arnaldo > Fixes: 72363540c009 ("perf probe: Support multiprobe event") > Reported-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> > Reported-by: He Zhe <zhe.he@xxxxxxxxxxxxx> > Signed-off-by: Masami Hiramatsu <mhiramat@xxxxxxxxxx> > --- > v2: > - Forward port on the latest perf/urgent tree. > - Add Fixes and Reporters. > --- > tools/perf/util/probe-file.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/tools/perf/util/probe-file.c b/tools/perf/util/probe-file.c > index 0f5fda11675f..8c852948513e 100644 > --- a/tools/perf/util/probe-file.c > +++ b/tools/perf/util/probe-file.c > @@ -206,6 +206,9 @@ static struct strlist *__probe_file__get_namelist(int fd, bool include_group) > } else > ret = strlist__add(sl, tev.event); > clear_probe_trace_event(&tev); > + /* Skip if there is same name multi-probe event in the list */ > + if (ret == -EEXIST) > + ret = 0; > if (ret < 0) > break; > } > -- - Arnaldo