diff options
author | Guenter Roeck <guenter.roeck@ericsson.com> | 2011-06-30 02:30:03 -0700 |
---|---|---|
committer | Guenter Roeck <guenter.roeck@ericsson.com> | 2011-07-01 15:56:06 -0700 |
commit | 3b33ca41227a54a78446fb0d7a6fdb9862f563db (patch) | |
tree | de8d5bf8012abb3d01962fcc7ab6c9226183ac93 /drivers/hwmon | |
parent | 7f2c0662e5cfd05f12ca49109e8f787bf2d87b66 (diff) | |
download | linux-3b33ca41227a54a78446fb0d7a6fdb9862f563db.tar.gz |
hwmon: (adm1275) Free allocated memory if probe function fails
Probe function did not free allocated memory if it failed. Fix it.
Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
Reviewed-by: Robert Coulson <robert.coulson@ericsson.com>
Diffstat (limited to 'drivers/hwmon')
-rw-r--r-- | drivers/hwmon/adm1275.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/hwmon/adm1275.c b/drivers/hwmon/adm1275.c index c2ee2048ab91..b9b7caf4a1d2 100644 --- a/drivers/hwmon/adm1275.c +++ b/drivers/hwmon/adm1275.c @@ -32,6 +32,7 @@ static int adm1275_probe(struct i2c_client *client, const struct i2c_device_id *id) { int config; + int ret; struct pmbus_driver_info *info; if (!i2c_check_functionality(client->adapter, @@ -43,8 +44,10 @@ static int adm1275_probe(struct i2c_client *client, return -ENOMEM; config = i2c_smbus_read_byte_data(client, ADM1275_PMON_CONFIG); - if (config < 0) - return config; + if (config < 0) { + ret = config; + goto err_mem; + } info->pages = 1; info->direct[PSC_VOLTAGE_IN] = true; @@ -76,7 +79,14 @@ static int adm1275_probe(struct i2c_client *client, else info->func[0] |= PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT; - return pmbus_do_probe(client, id, info); + ret = pmbus_do_probe(client, id, info); + if (ret) + goto err_mem; + return 0; + +err_mem: + kfree(info); + return ret; } static int adm1275_remove(struct i2c_client *client) |