* [PATCH kvmtool] arm64: Fix resource leaks in find_pmu_cpumask() @ 2026-07-23 9:04 Zongmin Zhou 2026-07-31 17:04 ` Will Deacon 0 siblings, 1 reply; 5+ messages in thread From: Zongmin Zhou @ 2026-07-23 9:04 UTC (permalink / raw) To: kvm, will, julien.thierry.kdev; +Cc: Zongmin Zhou From: Zongmin Zhou <zhouzongmin@kylinos.cn> Close file descriptors on read_file() failure and close the directory stream before returning from the function. Signed-off-by: Zongmin Zhou <zhouzongmin@kylinos.cn> --- arm64/pmu.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/arm64/pmu.c b/arm64/pmu.c index 78c15f1..b4d7605 100644 --- a/arm64/pmu.c +++ b/arm64/pmu.c @@ -75,7 +75,7 @@ static int find_pmu_cpumask(struct kvm *kvm, cpumask_t *cpumask) unsigned long val; ssize_t fd_sz; int fd, ret; - DIR *dir; + DIR *dir = NULL; memset(buf, 0, sizeof(buf)); @@ -109,6 +109,7 @@ static int find_pmu_cpumask(struct kvm *kvm, cpumask_t *cpumask) fd_sz = read_file(fd, cpulist, PAGE_SIZE); if (fd_sz < 0) { pmu_id = -errno; + close(fd); goto out_free; } close(fd); @@ -142,6 +143,7 @@ static int find_pmu_cpumask(struct kvm *kvm, cpumask_t *cpumask) fd_sz = read_file(fd, buf, PMU_ID_MAXLEN - 1); if (fd_sz < 0) { pmu_id = -errno; + close(fd); goto out_free; } close(fd); @@ -162,6 +164,8 @@ next_dir: } out_free: + if (dir) + closedir(dir); free(path); free(cpulist); return pmu_id; -- 2.34.1 No virus found Checked by Hillstone Network AntiVirus ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH kvmtool] arm64: Fix resource leaks in find_pmu_cpumask() 2026-07-23 9:04 [PATCH kvmtool] arm64: Fix resource leaks in find_pmu_cpumask() Zongmin Zhou @ 2026-07-31 17:04 ` Will Deacon 2026-08-06 2:32 ` [PATCH kvmtool v2] " Zongmin Zhou 0 siblings, 1 reply; 5+ messages in thread From: Will Deacon @ 2026-07-31 17:04 UTC (permalink / raw) To: Zongmin Zhou; +Cc: kvm, julien.thierry.kdev, Zongmin Zhou On Thu, Jul 23, 2026 at 05:04:13PM +0800, Zongmin Zhou wrote: > From: Zongmin Zhou <zhouzongmin@kylinos.cn> > > Close file descriptors on read_file() failure and close the directory > stream before returning from the function. > > Signed-off-by: Zongmin Zhou <zhouzongmin@kylinos.cn> > --- > arm64/pmu.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/arm64/pmu.c b/arm64/pmu.c > index 78c15f1..b4d7605 100644 > --- a/arm64/pmu.c > +++ b/arm64/pmu.c > @@ -75,7 +75,7 @@ static int find_pmu_cpumask(struct kvm *kvm, cpumask_t *cpumask) > unsigned long val; > ssize_t fd_sz; > int fd, ret; > - DIR *dir; > + DIR *dir = NULL; > > memset(buf, 0, sizeof(buf)); > > @@ -109,6 +109,7 @@ static int find_pmu_cpumask(struct kvm *kvm, cpumask_t *cpumask) > fd_sz = read_file(fd, cpulist, PAGE_SIZE); > if (fd_sz < 0) { > pmu_id = -errno; > + close(fd); > goto out_free; > } > close(fd); Seems a bit grotty to have identical calls to close() on the success and failure paths. > @@ -142,6 +143,7 @@ static int find_pmu_cpumask(struct kvm *kvm, cpumask_t *cpumask) > fd_sz = read_file(fd, buf, PMU_ID_MAXLEN - 1); > if (fd_sz < 0) { > pmu_id = -errno; > + close(fd); > goto out_free; > } > close(fd); Same here... Will ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH kvmtool v2] arm64: Fix resource leaks in find_pmu_cpumask() 2026-07-31 17:04 ` Will Deacon @ 2026-08-06 2:32 ` Zongmin Zhou 2026-08-11 15:29 ` Alexandru Elisei 2026-08-12 12:42 ` Will Deacon 0 siblings, 2 replies; 5+ messages in thread From: Zongmin Zhou @ 2026-08-06 2:32 UTC (permalink / raw) To: will; +Cc: julien.thierry.kdev, kvm, Zongmin Zhou From: Zongmin Zhou <zhouzongmin@kylinos.cn> Close file descriptors on read_file() failure and close the directory stream before returning from the function. Signed-off-by: Zongmin Zhou <zhouzongmin@kylinos.cn> --- Changes since v1: Save errno before close() so a close() failure doesn't clobber it, allowing a single close() for both paths. --- arm64/pmu.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/arm64/pmu.c b/arm64/pmu.c index 78c15f1..ef7faca 100644 --- a/arm64/pmu.c +++ b/arm64/pmu.c @@ -75,7 +75,7 @@ static int find_pmu_cpumask(struct kvm *kvm, cpumask_t *cpumask) unsigned long val; ssize_t fd_sz; int fd, ret; - DIR *dir; + DIR *dir = NULL; memset(buf, 0, sizeof(buf)); @@ -107,11 +107,12 @@ static int find_pmu_cpumask(struct kvm *kvm, cpumask_t *cpumask) goto next_dir; fd_sz = read_file(fd, cpulist, PAGE_SIZE); + ret = errno; + close(fd); if (fd_sz < 0) { - pmu_id = -errno; + pmu_id = -ret; goto out_free; } - close(fd); ret = cpulist_parse(cpulist, &pmu_cpumask); if (ret) { @@ -140,11 +141,12 @@ static int find_pmu_cpumask(struct kvm *kvm, cpumask_t *cpumask) goto next_dir; fd_sz = read_file(fd, buf, PMU_ID_MAXLEN - 1); + ret = errno; + close(fd); if (fd_sz < 0) { - pmu_id = -errno; + pmu_id = -ret; goto out_free; } - close(fd); val = strtoul(buf, NULL, 10); if (val > INT_MAX) { @@ -162,6 +164,8 @@ next_dir: } out_free: + if (dir) + closedir(dir); free(path); free(cpulist); return pmu_id; -- 2.34.1 No virus found Checked by Hillstone Network AntiVirus ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH kvmtool v2] arm64: Fix resource leaks in find_pmu_cpumask() 2026-08-06 2:32 ` [PATCH kvmtool v2] " Zongmin Zhou @ 2026-08-11 15:29 ` Alexandru Elisei 2026-08-12 12:42 ` Will Deacon 1 sibling, 0 replies; 5+ messages in thread From: Alexandru Elisei @ 2026-08-11 15:29 UTC (permalink / raw) To: Zongmin Zhou; +Cc: will, julien.thierry.kdev, kvm, Zongmin Zhou Hi, On Thu, Aug 06, 2026 at 10:32:18AM +0800, Zongmin Zhou wrote: > From: Zongmin Zhou <zhouzongmin@kylinos.cn> > > Close file descriptors on read_file() failure and close the directory > stream before returning from the function. > > Signed-off-by: Zongmin Zhou <zhouzongmin@kylinos.cn> > --- > Changes since v1: > > Save errno before close() so a close() failure doesn't clobber it, > allowing a single close() for both paths. > --- > arm64/pmu.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) > > diff --git a/arm64/pmu.c b/arm64/pmu.c > index 78c15f1..ef7faca 100644 > --- a/arm64/pmu.c > +++ b/arm64/pmu.c > @@ -75,7 +75,7 @@ static int find_pmu_cpumask(struct kvm *kvm, cpumask_t *cpumask) > unsigned long val; > ssize_t fd_sz; > int fd, ret; > - DIR *dir; > + DIR *dir = NULL; > > memset(buf, 0, sizeof(buf)); > > @@ -107,11 +107,12 @@ static int find_pmu_cpumask(struct kvm *kvm, cpumask_t *cpumask) > goto next_dir; > > fd_sz = read_file(fd, cpulist, PAGE_SIZE); > + ret = errno; > + close(fd); > if (fd_sz < 0) { > - pmu_id = -errno; > + pmu_id = -ret; > goto out_free; > } > - close(fd); > > ret = cpulist_parse(cpulist, &pmu_cpumask); > if (ret) { > @@ -140,11 +141,12 @@ static int find_pmu_cpumask(struct kvm *kvm, cpumask_t *cpumask) > goto next_dir; > > fd_sz = read_file(fd, buf, PMU_ID_MAXLEN - 1); > + ret = errno; > + close(fd); > if (fd_sz < 0) { > - pmu_id = -errno; > + pmu_id = -ret; > goto out_free; > } > - close(fd); > > val = strtoul(buf, NULL, 10); > if (val > INT_MAX) { > @@ -162,6 +164,8 @@ next_dir: > } > > out_free: > + if (dir) > + closedir(dir); > free(path); > free(cpulist); > return pmu_id; Looks good to me: Reviewed-by: Alexandru Elisei <alexandru.elisei@arm.com> Just one tiny, tiny nitpick: I would have set ret = -errno so we can do pmu_id = ret in case of error, like we do for cpulist_parse() errors, but that's totally unimportant. Thanks, Alex ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH kvmtool v2] arm64: Fix resource leaks in find_pmu_cpumask() 2026-08-06 2:32 ` [PATCH kvmtool v2] " Zongmin Zhou 2026-08-11 15:29 ` Alexandru Elisei @ 2026-08-12 12:42 ` Will Deacon 1 sibling, 0 replies; 5+ messages in thread From: Will Deacon @ 2026-08-12 12:42 UTC (permalink / raw) To: Zongmin Zhou Cc: catalin.marinas, kernel-team, Will Deacon, julien.thierry.kdev, kvm, Zongmin Zhou On Thu, 06 Aug 2026 10:32:18 +0800, Zongmin Zhou wrote: > Close file descriptors on read_file() failure and close the directory > stream before returning from the function. > > Applied to kvmtool (master), thanks! [1/1] arm64: Fix resource leaks in find_pmu_cpumask() https://git.kernel.org/will/kvmtool/c/f67bc0bdae94 Cheers, -- Will https://fixes.arm64.dev https://next.arm64.dev https://will.arm64.dev ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-08-12 12:43 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-07-23 9:04 [PATCH kvmtool] arm64: Fix resource leaks in find_pmu_cpumask() Zongmin Zhou 2026-07-31 17:04 ` Will Deacon 2026-08-06 2:32 ` [PATCH kvmtool v2] " Zongmin Zhou 2026-08-11 15:29 ` Alexandru Elisei 2026-08-12 12:42 ` Will Deacon
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.