Input: elan_i2c - switch to using devm_device_add_groups()
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Sat, 13 Jul 2019 08:13:16 +0000 (01:13 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Wed, 24 Jul 2019 09:58:52 +0000 (12:58 +0300)
Instead of installing custom devm cleanup action to remove attribute
groups on failure, let's use the dedicated devm API.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/mouse/elan_i2c_core.c

index d9b103a81a798e4a22a224504c7f7b445d6e68a7..b549d032da938df5d65068e95dd633dcfdd60111 100644 (file)
@@ -1138,13 +1138,6 @@ static void elan_disable_regulator(void *_data)
        regulator_disable(data->vcc);
 }
 
-static void elan_remove_sysfs_groups(void *_data)
-{
-       struct elan_tp_data *data = _data;
-
-       sysfs_remove_groups(&data->client->dev.kobj, elan_sysfs_groups);
-}
-
 static int elan_probe(struct i2c_client *client,
                      const struct i2c_device_id *dev_id)
 {
@@ -1269,20 +1262,12 @@ static int elan_probe(struct i2c_client *client,
                return error;
        }
 
-       error = sysfs_create_groups(&dev->kobj, elan_sysfs_groups);
+       error = devm_device_add_groups(dev, elan_sysfs_groups);
        if (error) {
                dev_err(dev, "failed to create sysfs attributes: %d\n", error);
                return error;
        }
 
-       error = devm_add_action(dev, elan_remove_sysfs_groups, data);
-       if (error) {
-               elan_remove_sysfs_groups(data);
-               dev_err(dev, "Failed to add sysfs cleanup action: %d\n",
-                       error);
-               return error;
-       }
-
        error = input_register_device(data->input);
        if (error) {
                dev_err(dev, "failed to register input device: %d\n", error);