Skip to contentSkip to conversation

regulator: max8660 - fix a memory leak in max8660_remove()

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

lore
Share & tools
lore

Axel Lin

author
#0 lore raw

PATCH 1/1 regulator: max8660 - fix a memory leak in max8660_remove()

In max8660_probe(), we allocate memory for max660. In max8660_remove(), current implementation only free rdev which is a member of struct max8660.
Thus, there is a small memory leak when we unload the module.

This patch fixes the memory leak by passing max660 to i2c clientdata, and properly kfree(max8660) in max8660_remove().

---
 drivers/regulator/max8660.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)
drivers/regulator/max8660.c +5 -5
index d97220e..c570e6e 100644
@@ -450,7 +450,7 @@ static int __devinit max8660_probe(struct i2c_client *client,
 		}
 	}
 
-	i2c_set_clientdata(client, rdev);
+	i2c_set_clientdata(client, max8660);
 	dev_info(&client->dev, "Maxim 8660/8661 regulator driver loaded\n");
 	return 0;
 
@@ -465,13 +465,13 @@ out:
 
 static int __devexit max8660_remove(struct i2c_client *client)
 {
-	struct regulator_dev **rdev = i2c_get_clientdata(client);
+	struct max8660 *max8660 = i2c_get_clientdata(client);
 	int i;
 
 	for (i = 0; i < MAX8660_V_END; i++)
-		if (rdev[i])
-			regulator_unregister(rdev[i]);
-	kfree(rdev);
+		if (max8660->rdev[i])
+			regulator_unregister(max8660->rdev[i]);
+	kfree(max8660);
 
 	return 0;
 }
Signature · 1 line
1.5.4.3
Acked-by on v1 1/1
#1 lore raw
Quoted 1 line · Axel Lin

In max8660_probe(), we allocate memory for max660.

Typo: max8660

Quoted 6 lines

In max8660_remove(), current implementation only free rdev which is a member of struct max8660.
Thus, there is a small memory leak when we unload the module.

This patch fixes the memory leak by passing max660 to i2c clientdata, and properly kfree(max8660) in max8660_remove().

These two lines could go away IMHO as they are directly visible from the code. Still, no real need for a resend from my side.

Quoted 2 lines

Thanks for catching that!

Signature · 2 lines
Pengutronix e.K.                           | Wolfram Sang                |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Acked-by on v1 1/1
#2 lore raw
In reply to Axel Lin
Quoted 9 lines · Axel Lin

In max8660_probe(), we allocate memory for max660. In max8660_remove(), current implementation only free rdev which is a member of struct max8660.
Thus, there is a small memory leak when we unload the module.

This patch fixes the memory leak by passing max660 to i2c clientdata, and properly kfree(max8660) in max8660_remove().

#3 lore raw
In reply to Axel Lin
Quoted 5 lines · Axel Lin

In max8660_probe(), we allocate memory for max660. In max8660_remove(), current implementation only free rdev which is a member of struct max8660.
Thus, there is a small memory leak when we unload the module.

Quoted 8 lines

This patch fixes the memory leak by passing max660 to i2c clientdata, and properly kfree(max8660) in max8660_remove().

---
 drivers/regulator/max8660.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

Applied.

Thanks

Liam

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