Skip to contentSkip to conversation

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

PATCH Applied Axel Lin 4 participants 4 messages Aug 14, 2010 – Aug 18, 2010 Voltage and current regulator framework

lore
Share & tools
lore

Axel Lin

author
#0 lore raw

PATCH 1/1 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.

---
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(-)
drivers/regulator/ab3100.c +1 -4
index 1179099..b349266 100644
@@ -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;
 		}
 
Signature · 1 line
1.7.0.4
#3 lore raw
In reply to Axel Lin
Quoted 20 lines · Axel Lin

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.

---
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(-)
drivers/regulator/ab3100.c +0 -0
index 1179099..b349266 100644
@@ -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);

drivers/regulator/ab3100.c static int __devinit ab3100_regulators_probe(struct platform_device *pdev) · line 642

Quoted 10 lines
drivers/regulator/ab3100.c +1 -4
-			i--;
 			/* remove the already registered regulators */
-			while (i > 0) {
+			while (--i >= 0)
 				regulator_unregister(ab3100_regulators[i].rdev);
-				i--;
-			}
 			return err;
 		}
 

Applied.

Thanks

Liam

Signature · 3 lines
Freelance Developer, SlimLogic Ltd
ASoC and Voltage Regulator Maintainer.
http://www.slimlogic.co.uk