]> Pileus Git - ~andy/linux/commitdiff
regulator: fixed regulator_bulk_enable unwinding code
authorAndrzej Hajda <a.hajda@samsung.com>
Fri, 1 Mar 2013 11:24:05 +0000 (12:24 +0100)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Fri, 1 Mar 2013 12:03:46 +0000 (20:03 +0800)
Unwinding code disables all successfully enabled regulators.
Error is logged for every failed regulator.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
drivers/regulator/core.c

index da9782bd27d0a182d32578c4779481072d0657ef..4a7790c58257d6121231ff12139bdbdad6622c83 100644 (file)
@@ -3057,9 +3057,13 @@ int regulator_bulk_enable(int num_consumers,
        return 0;
 
 err:
-       pr_err("Failed to enable %s: %d\n", consumers[i].supply, ret);
-       while (--i >= 0)
-               regulator_disable(consumers[i].consumer);
+       for (i = 0; i < num_consumers; i++) {
+               if (consumers[i].ret < 0)
+                       pr_err("Failed to enable %s: %d\n", consumers[i].supply,
+                              consumers[i].ret);
+               else
+                       regulator_disable(consumers[i].consumer);
+       }
 
        return ret;
 }