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>
This commit is contained in:
Axel Lin 2010-08-14 21:31:01 +08:00 committed by Liam Girdwood
parent af54decd6a
commit b3fcf3e576
1 changed files with 1 additions and 4 deletions

View File

@ -634,12 +634,9 @@ static int __devinit ab3100_regulators_probe(struct platform_device *pdev)
"%s: failed to register regulator %s err %d\n", "%s: failed to register regulator %s err %d\n",
__func__, ab3100_regulator_desc[i].name, __func__, ab3100_regulator_desc[i].name,
err); err);
i--;
/* remove the already registered regulators */ /* remove the already registered regulators */
while (i > 0) { while (--i >= 0)
regulator_unregister(ab3100_regulators[i].rdev); regulator_unregister(ab3100_regulators[i].rdev);
i--;
}
return err; return err;
} }