]> www.infradead.org Git - users/hch/misc.git/commitdiff
perf/x86/rapl: Fix error handling in init_rapl_pmus()
authorDhananjay Ugwekar <dhananjay.ugwekar@amd.com>
Thu, 20 Mar 2025 10:06:19 +0000 (10:06 +0000)
committerIngo Molnar <mingo@kernel.org>
Thu, 20 Mar 2025 20:03:55 +0000 (21:03 +0100)
If init_rapl_pmu() fails while allocating memory for "rapl_pmu" objects,
we miss freeing the "rapl_pmus" object in the error path. Fix that.

Fixes: 9b99d65c0bb4 ("perf/x86/rapl: Move the pmu allocation out of CPU hotplug")
Signed-off-by: Dhananjay Ugwekar <dhananjay.ugwekar@amd.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20250320100617.4480-1-dhananjay.ugwekar@amd.com
arch/x86/events/rapl.c

index 6941f4811bec17bd03993f7a3bda7eadaacfc023..043f0a0b1e00d5845e8f6fce49c39f000ef04250 100644 (file)
@@ -730,6 +730,7 @@ static int __init init_rapl_pmus(struct rapl_pmus **rapl_pmus_ptr, int rapl_pmu_
 {
        int nr_rapl_pmu = topology_max_packages();
        struct rapl_pmus *rapl_pmus;
+       int ret;
 
        /*
         * rapl_pmu_scope must be either PKG, DIE or CORE
@@ -761,7 +762,11 @@ static int __init init_rapl_pmus(struct rapl_pmus **rapl_pmus_ptr, int rapl_pmu_
        rapl_pmus->pmu.module           = THIS_MODULE;
        rapl_pmus->pmu.capabilities     = PERF_PMU_CAP_NO_EXCLUDE;
 
-       return init_rapl_pmu(rapl_pmus);
+       ret = init_rapl_pmu(rapl_pmus);
+       if (ret)
+               kfree(rapl_pmus);
+
+       return ret;
 }
 
 static struct rapl_model model_snb = {