On Fri, Oct 25, 2019 at 08:47:12AM -0700, Ian Rogers wrote: SNIP > event_pmu: PE_NAME opt_event_config > { > ... > ALLOC_LIST(list); // <--- where list gets allocated > ... > https://github.com/torvalds/linux/blob/master/tools/perf/util/parse-events.y#L229 > > opt_event_config: > https://github.com/torvalds/linux/blob/master/tools/perf/util/parse-events.y#L510 > > So the parse_state is ending up with a list, however, parsing is > failing. If the list isn't adding to the evlist then it becomes a > leak. Splicing it onto the evlist allows the caller to clean this up > and avoids the leak. An alternate approach is to free the failed list > and not get the caller to clean up. A way to do this is to create an > evlist, splice the failed list onto it and then free it - which winds > up being fairly identical to this approach, and this approach is a > smaller change. agreed, thanks for the all the details jirka