Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney...
[firefly-linux-kernel-4.4.55.git] / drivers / hwmon / w83l785ts.c
index 5f14e389705832facf880ad0085c0d874996ffac..39dbe990dc102e5638b157cecb1fd3e4a3720a09 100644 (file)
@@ -176,19 +176,18 @@ static int w83l785ts_detect(struct i2c_client *client,
        return 0;
 }
 
-static int w83l785ts_probe(struct i2c_client *new_client,
+static int w83l785ts_probe(struct i2c_client *client,
                           const struct i2c_device_id *id)
 {
        struct w83l785ts_data *data;
-       int err = 0;
+       struct device *dev = &client->dev;
+       int err;
 
-       data = kzalloc(sizeof(struct w83l785ts_data), GFP_KERNEL);
-       if (!data) {
-               err = -ENOMEM;
-               goto exit;
-       }
+       data = devm_kzalloc(dev, sizeof(struct w83l785ts_data), GFP_KERNEL);
+       if (!data)
+               return -ENOMEM;
 
-       i2c_set_clientdata(new_client, data);
+       i2c_set_clientdata(client, data);
        data->valid = 0;
        mutex_init(&data->update_lock);
 
@@ -200,18 +199,16 @@ static int w83l785ts_probe(struct i2c_client *new_client,
         * Nothing yet, assume it is already started.
         */
 
-       err = device_create_file(&new_client->dev,
-                                &sensor_dev_attr_temp1_input.dev_attr);
+       err = device_create_file(dev, &sensor_dev_attr_temp1_input.dev_attr);
        if (err)
-               goto exit_remove;
+               return err;
 
-       err = device_create_file(&new_client->dev,
-                                &sensor_dev_attr_temp1_max.dev_attr);
+       err = device_create_file(dev, &sensor_dev_attr_temp1_max.dev_attr);
        if (err)
                goto exit_remove;
 
        /* Register sysfs hooks */
-       data->hwmon_dev = hwmon_device_register(&new_client->dev);
+       data->hwmon_dev = hwmon_device_register(dev);
        if (IS_ERR(data->hwmon_dev)) {
                err = PTR_ERR(data->hwmon_dev);
                goto exit_remove;
@@ -220,12 +217,8 @@ static int w83l785ts_probe(struct i2c_client *new_client,
        return 0;
 
 exit_remove:
-       device_remove_file(&new_client->dev,
-                          &sensor_dev_attr_temp1_input.dev_attr);
-       device_remove_file(&new_client->dev,
-                          &sensor_dev_attr_temp1_max.dev_attr);
-       kfree(data);
-exit:
+       device_remove_file(dev, &sensor_dev_attr_temp1_input.dev_attr);
+       device_remove_file(dev, &sensor_dev_attr_temp1_max.dev_attr);
        return err;
 }
 
@@ -239,7 +232,6 @@ static int w83l785ts_remove(struct i2c_client *client)
        device_remove_file(&client->dev,
                           &sensor_dev_attr_temp1_max.dev_attr);
 
-       kfree(data);
        return 0;
 }