From: Axel Lin <axel.lin@gmail.com>
Date: Sat, 14 Aug 2010 13:44:04 +0000 (+0800)
Subject: regulator: ab8500 - fix the logic to remove already registered regulators in error... 
X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=d4876a3bc041e8e40af20b8addbec6d0a42e3842;p=GitHub%2FLineageOS%2FG12%2Fandroid_kernel_amlogic_linux-4.9.git

regulator: ab8500 - fix the logic to remove already registered regulators in error path

In current implementation, ab8500_regulator_info[0].regulator is not
unregistered if the error happen at i > 0.

This patch fixes the resource leak and also improves the readability.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Linus Walleij <linus.walleij@stericsson.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
---

diff --git a/drivers/regulator/ab8500.c b/drivers/regulator/ab8500.c
index cc7cbafc5b94..3d09580dc883 100644
--- a/drivers/regulator/ab8500.c
+++ b/drivers/regulator/ab8500.c
@@ -369,11 +369,9 @@ static __devinit int ab8500_regulator_probe(struct platform_device *pdev)
 			dev_err(&pdev->dev, "failed to register regulator %s\n",
 					info->desc.name);
 			/* when we fail, un-register all earlier regulators */
-			i--;
-			while (i > 0) {
+			while (--i >= 0) {
 				info = &ab8500_regulator_info[i];
 				regulator_unregister(info->regulator);
-				i--;
 			}
 			return err;
 		}