ARM: OMAP: CPUidle: Unregister drivere on device registration failure

If the CPUidle device registration fails for some reason, we should
unregister the driver on error path.

Fix the code accordingly. Also when at it, check of the driver registration
failure too.

Acked-by: Nishanth Menon <[email protected]>
Signed-off-by: Santosh Shilimkar <[email protected]>
Signed-off-by: Kevin Hilman <[email protected]>
This commit is contained in:
Santosh Shilimkar 2013-03-25 15:35:05 +05:30 • committed by Kevin Hilman
commit 63b951ed5b
2 changed files with 10 additions and 2 deletions

View file

@ -359,7 +359,10 @@ int __init omap3_idle_init(void)
if (!mpu_pd || !core_pd || !per_pd || !cam_pd)
return -ENODEV;
cpuidle_register_driver(&omap3_idle_driver);
if (cpuidle_register_driver(&omap3_idle_driver)) {
pr_err("%s: CPUidle driver register failed\n", __func__);
return -EIO;
}
dev = &per_cpu(omap3_idle_dev, smp_processor_id());
dev->cpu = 0;
@ -367,6 +370,7 @@ int __init omap3_idle_init(void)
if (cpuidle_register_device(dev)) {
printk(KERN_ERR "%s: CPUidle register device failed\n",
__func__);
cpuidle_unregister_driver(&omap3_idle_driver);
return -EIO;
}

View file

@ -222,7 +222,10 @@ int __init omap4_idle_init(void)
if (!cpu_clkdm[0] || !cpu_clkdm[1])
return -ENODEV;
cpuidle_register_driver(&omap4_idle_driver);
if (cpuidle_register_driver(&omap4_idle_driver)) {
pr_err("%s: CPUidle driver register failed\n", __func__);
return -EIO;
}
for_each_cpu(cpu_id, cpu_online_mask) {
dev = &per_cpu(omap4_idle_dev, cpu_id);
@ -232,6 +235,7 @@ int __init omap4_idle_init(void)
#endif
if (cpuidle_register_device(dev)) {
pr_err("%s: CPUidle register failed\n", __func__);
cpuidle_unregister_driver(&omap4_idle_driver);
return -EIO;
}
}