misc: bh1780: Introduce the use of devm_kzalloc
authorHimangi Saraogi <himangi774@gmail.com>
Wed, 23 Jul 2014 21:15:40 +0000 (02:45 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 27 Jul 2014 18:10:42 +0000 (11:10 -0700)
This patch introduces the use of devm_kzalloc and does away with the
kfrees in the probe and remove functions. A label and the kfree
being called on the return path of failure on i2c_check_functionality,
which is completely unnecessary and removed. The NULL assignment of
ddata is no longer required is also done away with.

Signed-off-by: Himangi Saraogi <himangi774@gmail.com>
Acked-by: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/bh1780gli.c

index 48ea33d..4c4a59b 100644 (file)
@@ -149,50 +149,35 @@ static int bh1780_probe(struct i2c_client *client,
                                                const struct i2c_device_id *id)
 {
        int ret;
-       struct bh1780_data *ddata = NULL;
+       struct bh1780_data *ddata;
        struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent);
 
-       if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE)) {
-               ret = -EIO;
-               goto err_op_failed;
-       }
+       if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE))
+               return -EIO;
 
-       ddata = kzalloc(sizeof(struct bh1780_data), GFP_KERNEL);
-       if (ddata == NULL) {
-               ret = -ENOMEM;
-               goto err_op_failed;
-       }
+       ddata = devm_kzalloc(&client->dev, sizeof(struct bh1780_data),
+                            GFP_KERNEL);
+       if (ddata == NULL)
+               return -ENOMEM;
 
        ddata->client = client;
        i2c_set_clientdata(client, ddata);
 
        ret = bh1780_read(ddata, BH1780_REG_PARTID, "PART ID");
        if (ret < 0)
-               goto err_op_failed;
+               return ret;
 
        dev_info(&client->dev, "Ambient Light Sensor, Rev : %d\n",
                        (ret & BH1780_REVMASK));
 
        mutex_init(&ddata->lock);
 
-       ret = sysfs_create_group(&client->dev.kobj, &bh1780_attr_group);
-       if (ret)
-               goto err_op_failed;
-
-       return 0;
-
-err_op_failed:
-       kfree(ddata);
-       return ret;
+       return sysfs_create_group(&client->dev.kobj, &bh1780_attr_group);
 }
 
 static int bh1780_remove(struct i2c_client *client)
 {
-       struct bh1780_data *ddata;
-
-       ddata = i2c_get_clientdata(client);
        sysfs_remove_group(&client->dev.kobj, &bh1780_attr_group);
-       kfree(ddata);
 
        return 0;
 }