tools/perf/util/pmu.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
The commit in Fixes has reordered some code, but missed an error handling
path.
'goto err' now, in order to avoid a memory leak in case of error.
Fixes: f63a536f03a2 ("perf pmu: Merge JSON events with sysfs at load time")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
tools/perf/util/pmu.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index bb2ca29cd7bd..8dfce84ad9fe 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -1018,10 +1018,9 @@ struct perf_pmu *perf_pmu__lookup(struct list_head *pmus, int dirfd, const char
* type value and format definitions. Load both right
* now.
*/
- if (pmu_format(pmu, dirfd, name)) {
- free(pmu);
- return NULL;
- }
+ if (pmu_format(pmu, dirfd, name))
+ goto err;
+
pmu->is_core = is_pmu_core(name);
pmu->cpus = pmu_cpumask(dirfd, name, pmu->is_core);
--
2.34.1
On Sat, 26 Aug 2023 23:32:45 +0200, Christophe JAILLET wrote: > The commit in Fixes has reordered some code, but missed an error handling > path. > > 'goto err' now, in order to avoid a memory leak in case of error. > > Applied to perf-tools-next, thanks! Best regards, -- Namhyung Kim <namhyung@kernel.org>
Le 26/08/2023 à 23:32, Christophe JAILLET a écrit :
> The commit in Fixes has reordered some code, but missed an error handling
> path.
>
> 'goto err' now, in order to avoid a memory leak in case of error.
>
> Fixes: f63a536f03a2 ("perf pmu: Merge JSON events with sysfs at load time")
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> ---
Hi,
polite reminder.
CJ
> tools/perf/util/pmu.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
> index bb2ca29cd7bd..8dfce84ad9fe 100644
> --- a/tools/perf/util/pmu.c
> +++ b/tools/perf/util/pmu.c
> @@ -1018,10 +1018,9 @@ struct perf_pmu *perf_pmu__lookup(struct list_head *pmus, int dirfd, const char
> * type value and format definitions. Load both right
> * now.
> */
> - if (pmu_format(pmu, dirfd, name)) {
> - free(pmu);
> - return NULL;
> - }
> + if (pmu_format(pmu, dirfd, name))
> + goto err;
> +
> pmu->is_core = is_pmu_core(name);
> pmu->cpus = pmu_cpumask(dirfd, name, pmu->is_core);
>
On Sun, Feb 25, 2024 at 7:42 AM Christophe JAILLET
<christophe.jaillet@wanadoo.fr> wrote:
>
> Le 26/08/2023 à 23:32, Christophe JAILLET a écrit :
> > The commit in Fixes has reordered some code, but missed an error handling
> > path.
> >
> > 'goto err' now, in order to avoid a memory leak in case of error.
> >
> > Fixes: f63a536f03a2 ("perf pmu: Merge JSON events with sysfs at load time")
> > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> > ---
>
> Hi,
>
> polite reminder.
Apologies for the delay.
Reviewed-by: Ian Rogers <irogers@google.com>
Thanks,
Ian
> CJ
>
>
> > tools/perf/util/pmu.c | 7 +++----
> > 1 file changed, 3 insertions(+), 4 deletions(-)
> >
> > diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
> > index bb2ca29cd7bd..8dfce84ad9fe 100644
> > --- a/tools/perf/util/pmu.c
> > +++ b/tools/perf/util/pmu.c
> > @@ -1018,10 +1018,9 @@ struct perf_pmu *perf_pmu__lookup(struct list_head *pmus, int dirfd, const char
> > * type value and format definitions. Load both right
> > * now.
> > */
> > - if (pmu_format(pmu, dirfd, name)) {
> > - free(pmu);
> > - return NULL;
> > - }
> > + if (pmu_format(pmu, dirfd, name))
> > + goto err;
> > +
> > pmu->is_core = is_pmu_core(name);
> > pmu->cpus = pmu_cpumask(dirfd, name, pmu->is_core);
> >
>
© 2016 - 2025 Red Hat, Inc.