diff options
author | Axel Lin <axel.lin@gmail.com> | 2010-08-14 21:31:01 +0800 |
---|---|---|
committer | Liam Girdwood <lrg@slimlogic.co.uk> | 2010-09-01 12:59:33 +0100 |
commit | b3fcf3e576749b911e984e752b6b390c326efb76 (patch) | |
tree | 7247b0b5e28c606db2a35e8e516d7e196f0d1838 /drivers/regulator/ab3100.c | |
parent | af54decd6a2b8efa335020afc77254355c4c1bab (diff) |
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.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/regulator/ab3100.c b/drivers/regulator/ab3100.c index 11790990277..b349266a43d 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; } |