diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/kernel/perf_event_cpu.c | 15 |
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 | |||
292 | out_free: | ||
293 | pr_info("failed to register PMU devices!"); | ||
294 | kfree(pmu); | ||
295 | return ret; | ||
291 | } | 296 | } |
292 | 297 | ||
293 | static struct platform_driver cpu_pmu_driver = { | 298 | static struct platform_driver cpu_pmu_driver = { |