On Sat, Nov 22, 2025 at 12:19:17AM -0800, Ian Rogers wrote:
> Move nsinfo__zput from cleanup_perf_probe_events to
> clear_perf_probe_event so it is always executed. Clean up
> clear_perf_probe_event to not call nsinfo__zput and use the pev
Do you mean clear_perf_probe_events?
> variable to avoid repeated array accesses.
>
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
> tools/perf/util/probe-event.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
> index 6ab2eb551b6c..710e4620923e 100644
> --- a/tools/perf/util/probe-event.c
> +++ b/tools/perf/util/probe-event.c
> @@ -2419,6 +2419,7 @@ void clear_perf_probe_event(struct perf_probe_event *pev)
> }
> pev->nargs = 0;
> zfree(&pev->args);
> + nsinfo__zput(pev->nsi);
I'm not sure pev->nsi is always set properly. At least it seems to miss
in the perf_probe_event__copy().
Thanks,
Namhyung
> }
>
> #define strdup_or_goto(str, label) \
> @@ -3767,12 +3768,11 @@ void cleanup_perf_probe_events(struct perf_probe_event *pevs, int npevs)
> /* Loop 3: cleanup and free trace events */
> for (i = 0; i < npevs; i++) {
> pev = &pevs[i];
> - for (j = 0; j < pevs[i].ntevs; j++)
> - clear_probe_trace_event(&pevs[i].tevs[j]);
> - zfree(&pevs[i].tevs);
> - pevs[i].ntevs = 0;
> - nsinfo__zput(pev->nsi);
> - clear_perf_probe_event(&pevs[i]);
> + for (j = 0; j < pev->ntevs; j++)
> + clear_probe_trace_event(&pev->tevs[j]);
> + zfree(&pev->tevs);
> + pev->ntevs = 0;
> + clear_perf_probe_event(pev);
> }
> }
>
> --
> 2.52.0.rc2.455.g230fcf2819-goog
>