]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
cpuidle: fix error handling in __cpuidle_register_device
authorColin Cross <ccross@android.com>
Wed, 14 Mar 2012 18:29:51 +0000 (11:29 -0700)
committerDaniel Lezcano <daniel.lezcano@linaro.org>
Fri, 29 Jun 2012 09:40:28 +0000 (11:40 +0200)
Fix the error handling in __cpuidle_register_device to include
the missing list_del.  Move it to a label, which will simplify
the error handling when coupled states are added.

Reviewed-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Reviewed-by: Kevin Hilman <khilman@ti.com>
Tested-by: Kevin Hilman <khilman@ti.com>
Reviewed-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Colin Cross <ccross@android.com>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
drivers/cpuidle/cpuidle.c

index cd266101c80efc090f98031b6e42eca62756bb41..3c37ced0e0c036ad5e2bf20c3a7016b0f7710806 100644 (file)
@@ -392,13 +392,18 @@ static int __cpuidle_register_device(struct cpuidle_device *dev)
 
        per_cpu(cpuidle_devices, dev->cpu) = dev;
        list_add(&dev->device_list, &cpuidle_detected_devices);
-       if ((ret = cpuidle_add_sysfs(cpu_dev))) {
-               module_put(cpuidle_driver->owner);
-               return ret;
-       }
+       ret = cpuidle_add_sysfs(cpu_dev);
+       if (ret)
+               goto err_sysfs;
 
        dev->registered = 1;
        return 0;
+
+err_sysfs:
+       list_del(&dev->device_list);
+       per_cpu(cpuidle_devices, dev->cpu) = NULL;
+       module_put(cpuidle_driver->owner);
+       return ret;
 }
 
 /**