Re: [PATCH v2] perf drm_pmu: fix fd_dir leaks in for_each_drm_fdinfo_in_dir()
From: Ian Rogers
Date: Mon Aug 18 2025 - 17:30:57 EST
On Tue, Aug 12, 2025 at 8:35 PM <zhaoguohan@xxxxxxxxxx> wrote:
>
> From: GuoHan Zhao <zhaoguohan@xxxxxxxxxx>
>
> Fix file descriptor leak when callback function returns error. The
> function was directly returning without closing fdinfo_dir_fd and
> fd_dir when cb() returned non-zero value.
>
> Fixes: 28917cb17f9d ("perf drm_pmu: Add a tool like PMU to expose DRM information")
> Signed-off-by: GuoHan Zhao <zhaoguohan@xxxxxxxxxx>
Reviewed-by: Ian Rogers <irogers@xxxxxxxxxx>
Thanks,
Ian
> ---
> V1 -> V2: Added the Fixes tag in commit message
> ---
> tools/perf/util/drm_pmu.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/drm_pmu.c b/tools/perf/util/drm_pmu.c
> index 988890f37ba7..424a76d1a953 100644
> --- a/tools/perf/util/drm_pmu.c
> +++ b/tools/perf/util/drm_pmu.c
> @@ -458,8 +458,10 @@ static int for_each_drm_fdinfo_in_dir(int (*cb)(void *args, int fdinfo_dir_fd, c
> }
> ret = cb(args, fdinfo_dir_fd, fd_entry->d_name);
> if (ret)
> - return ret;
> + goto cleanup;
> }
> +
> +cleanup:
> if (fdinfo_dir_fd != -1)
> close(fdinfo_dir_fd);
> closedir(fd_dir);
> --
> 2.43.0
>