]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
hwmon: (max16065) Convert to use devm_kzalloc
authorGuenter Roeck <linux@roeck-us.net>
Wed, 22 Feb 2012 16:56:46 +0000 (08:56 -0800)
committerGuenter Roeck <guenter.roeck@ericsson.com>
Mon, 19 Mar 2012 01:27:48 +0000 (18:27 -0700)
Marginally less code and eliminate the possibility of memory leaks.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/max16065.c

index 51edae93baa21a7e2a224c1e6affb8ae58cf0b38..822261be84dd5ed65639ebf31e04f8ecf0edb364 100644 (file)
@@ -554,7 +554,7 @@ static int max16065_probe(struct i2c_client *client,
                                     | I2C_FUNC_SMBUS_READ_WORD_DATA))
                return -ENODEV;
 
-       data = kzalloc(sizeof(*data), GFP_KERNEL);
+       data = devm_kzalloc(&client->dev, sizeof(*data), GFP_KERNEL);
        if (unlikely(!data))
                return -ENOMEM;
 
@@ -567,20 +567,16 @@ static int max16065_probe(struct i2c_client *client,
 
        if (have_secondary) {
                val = i2c_smbus_read_byte_data(client, MAX16065_SW_ENABLE);
-               if (unlikely(val < 0)) {
-                       ret = val;
-                       goto out_free;
-               }
+               if (unlikely(val < 0))
+                       return val;
                secondary_is_max = val & MAX16065_WARNING_OV;
        }
 
        /* Read scale registers, convert to range */
        for (i = 0; i < DIV_ROUND_UP(data->num_adc, 4); i++) {
                val = i2c_smbus_read_byte_data(client, MAX16065_SCALE(i));
-               if (unlikely(val < 0)) {
-                       ret = val;
-                       goto out_free;
-               }
+               if (unlikely(val < 0))
+                       return val;
                for (j = 0; j < 4 && i * 4 + j < data->num_adc; j++) {
                        data->range[i * 4 + j] =
                          max16065_adc_range[(val >> (j * 2)) & 0x3];
@@ -595,10 +591,8 @@ static int max16065_probe(struct i2c_client *client,
                for (j = 0; j < data->num_adc; j++) {
                        val = i2c_smbus_read_byte_data(client,
                                                       MAX16065_LIMIT(i, j));
-                       if (unlikely(val < 0)) {
-                               ret = val;
-                               goto out_free;
-                       }
+                       if (unlikely(val < 0))
+                               return val;
                        data->limit[i][j] = LIMIT_TO_MV(val, data->range[j]);
                }
        }
@@ -661,8 +655,6 @@ static int max16065_probe(struct i2c_client *client,
 
 out:
        max16065_cleanup(client);
-out_free:
-       kfree(data);
        return ret;
 }
 
@@ -672,7 +664,6 @@ static int max16065_remove(struct i2c_client *client)
 
        hwmon_device_unregister(data->hwmon_dev);
        max16065_cleanup(client);
-       kfree(data);
 
        return 0;
 }