rtc: abx80x: use devm_add_action_or_reset()
authorSudip Mukherjee <sudipm.mukherjee@gmail.com>
Sun, 3 Jul 2016 20:32:22 +0000 (21:32 +0100)
committerAlexandre Belloni <alexandre.belloni@free-electrons.com>
Tue, 19 Jul 2016 15:27:42 +0000 (17:27 +0200)
If devm_add_action() fails we are explicitly calling the cleanup to free
the resources allocated.  Lets use the helper devm_add_action_or_reset()
and return directly in case of error, as we know that the cleanup function
has been already called by the helper if there was any error.

Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
drivers/rtc/rtc-abx80x.c

index ba0d619..fea9a60 100644 (file)
@@ -643,17 +643,15 @@ static int abx80x_probe(struct i2c_client *client,
                return err;
        }
 
-       err = devm_add_action(&client->dev, rtc_calib_remove_sysfs_group,
-                             &client->dev);
-       if (err) {
-               rtc_calib_remove_sysfs_group(&client->dev);
+       err = devm_add_action_or_reset(&client->dev,
+                                      rtc_calib_remove_sysfs_group,
+                                      &client->dev);
+       if (err)
                dev_err(&client->dev,
                        "Failed to add sysfs cleanup action: %d\n",
                        err);
-               return err;
-       }
 
-       return 0;
+       return err;
 }
 
 static int abx80x_remove(struct i2c_client *client)