aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/regulator/ab3100.c
diff options
context:
space:
mode:
authorAxel Lin <axel.lin@gmail.com>2010-08-14 21:31:01 +0800
committerLiam Girdwood <lrg@slimlogic.co.uk>2010-09-01 12:59:33 +0100
commitb3fcf3e576749b911e984e752b6b390c326efb76 (patch)
tree7247b0b5e28c606db2a35e8e516d7e196f0d1838 /drivers/regulator/ab3100.c
parentregulator/ab8500: move dereference below the check for NULL (diff)
downloadlinux-dev-b3fcf3e576749b911e984e752b6b390c326efb76.tar.xz
linux-dev-b3fcf3e576749b911e984e752b6b390c326efb76.zip
regulator: ab3100 - fix the logic to remove already registered regulators in error path
In current implementation, ab3100_regulators[0].rdev 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>
Diffstat (limited to 'drivers/regulator/ab3100.c')
-rw-r--r--drivers/regulator/ab3100.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/regulator/ab3100.c b/drivers/regulator/ab3100.c
index 11790990277a..b349266a43de 100644
--- a/drivers/regulator/ab3100.c
+++ b/drivers/regulator/ab3100.c
@@ -634,12 +634,9 @@ static int __devinit ab3100_regulators_probe(struct platform_device *pdev)
"%s: failed to register regulator %s err %d\n",
__func__, ab3100_regulator_desc[i].name,
err);
- i--;
/* remove the already registered regulators */
- while (i > 0) {
+ while (--i >= 0)
regulator_unregister(ab3100_regulators[i].rdev);
- i--;
- }
return err;
}