On Sat, Jun 6, 2026 at 5:20 AM Tanushree Shah <[email protected]> wrote:
>
> When samples are skipped due to time filtering in process_sample_event(),
> the early return path bypasses addr_location__exit(), causing memory leaks
> of thread, map, and maps references acquired by machine__resolve().
>
> These references must be released through addr_location__exit() before
> returning.
>
> Fixes: 8e746e95c3e4 ("perf data: Allow filtering conversion by time range")
> Signed-off-by: Tanushree Shah <[email protected]>

Reviewed-by: Ian Rogers <[email protected]>

Thanks,
Ian

> ---
>  tools/perf/util/data-convert-json.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/tools/perf/util/data-convert-json.c 
> b/tools/perf/util/data-convert-json.c
> index d526c91312ed..6a8d00c80394 100644
> --- a/tools/perf/util/data-convert-json.c
> +++ b/tools/perf/util/data-convert-json.c
> @@ -177,6 +177,7 @@ static int process_sample_event(const struct perf_tool 
> *tool,
>
>         if (perf_time__ranges_skip_sample(c->ptime_range, c->range_num, 
> sample->time)) {
>                 ++c->skipped;
> +               addr_location__exit(&al);
>                 return 0;
>         }
>
> --
> 2.47.3
>

Reply via email to