The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH] hwmon: Don't leak info in adm1275_probe
@ 2011-07-02 20:04 Jesper Juhl
  2011-07-02 21:14 ` Guenter Roeck
  0 siblings, 1 reply; 3+ messages in thread
From: Jesper Juhl @ 2011-07-02 20:04 UTC (permalink / raw)
  To: linux-kernel; +Cc: lm-sensors, Guenter Roeck, Jean Delvare

In drivers/hwmon/adm1275.c:adm1275_probe() we'll leak the memory
allocated to 'info' if the call to i2c_smbus_read_byte_data() returns
less than zero.

This patch fixes the leak by simply calling kfree(info) when needed.
I also considered just moving the 'info' memory allocation below the
call to i2c_smbus_read_byte_data(), but I was not sure if it mattered
to get the -ENOMEM first in that case or if it would be bad to first
have a successful i2c_smbus_read_byte_data() call and then fail the
mem alloc, so I stuck with the safe option.

Signed-off-by: Jesper Juhl <jj@chaosbits.net>
---
 drivers/hwmon/adm1275.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

  Compile tested only.

diff --git a/drivers/hwmon/adm1275.c b/drivers/hwmon/adm1275.c
index c2ee204..2ebf255 100644
--- a/drivers/hwmon/adm1275.c
+++ b/drivers/hwmon/adm1275.c
@@ -43,8 +43,10 @@ static int adm1275_probe(struct i2c_client *client,
 		return -ENOMEM;
 
 	config = i2c_smbus_read_byte_data(client, ADM1275_PMON_CONFIG);
-	if (config < 0)
+	if (config < 0) {
+		kfree(info);
 		return config;
+	}
 
 	info->pages = 1;
 	info->direct[PSC_VOLTAGE_IN] = true;
-- 
1.7.6


-- 
Jesper Juhl <jj@chaosbits.net>       http://www.chaosbits.net/
Don't top-post http://www.catb.org/jargon/html/T/top-post.html
Plain text mails only, please.


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-07-02 21:27 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-02 20:04 [PATCH] hwmon: Don't leak info in adm1275_probe Jesper Juhl
2011-07-02 21:14 ` Guenter Roeck
2011-07-02 21:18   ` Jesper Juhl

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox