[PATCH] regulator: ab3100 - fix the logic to remove already registered regulators in error path

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Axel Lin
Date: Saturday, August 14, 2010 - 6:31 am

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>
---
I think this change is better ( in readability ) than simply change "while (i > 0)" to "while (i >= 0)".

 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 1179099..b349266 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;
 		}
 
-- 
1.7.0.4



--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH] regulator: ab3100 - fix the logic to remove alread ..., Axel Lin, (Sat Aug 14, 6:31 am)