aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/kernel/perf_event_cpu.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/arch/arm/kernel/perf_event_cpu.c b/arch/arm/kernel/perf_event_cpu.c
index 43496f600569..1f2740e3dbc0 100644
--- a/arch/arm/kernel/perf_event_cpu.c
+++ b/arch/arm/kernel/perf_event_cpu.c
@@ -277,17 +277,22 @@ static int cpu_pmu_device_probe(struct platform_device *pdev)
277 } 277 }
278 278
279 if (ret) { 279 if (ret) {
280 pr_info("failed to register PMU devices!"); 280 pr_info("failed to probe PMU!");
281 kfree(pmu); 281 goto out_free;
282 return ret;
283 } 282 }
284 283
285 cpu_pmu = pmu; 284 cpu_pmu = pmu;
286 cpu_pmu->plat_device = pdev; 285 cpu_pmu->plat_device = pdev;
287 cpu_pmu_init(cpu_pmu); 286 cpu_pmu_init(cpu_pmu);
288 armpmu_register(cpu_pmu, PERF_TYPE_RAW); 287 ret = armpmu_register(cpu_pmu, PERF_TYPE_RAW);
289 288
290 return 0; 289 if (!ret)
290 return 0;
291
292out_free:
293 pr_info("failed to register PMU devices!");
294 kfree(pmu);
295 return ret;
291} 296}
292 297
293static struct platform_driver cpu_pmu_driver = { 298static struct platform_driver cpu_pmu_driver = {