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.mukher...@codethink.co.uk>
---
 drivers/rtc/rtc-abx80x.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/drivers/rtc/rtc-abx80x.c b/drivers/rtc/rtc-abx80x.c
index ba0d619..fea9a60 100644
--- a/drivers/rtc/rtc-abx80x.c
+++ b/drivers/rtc/rtc-abx80x.c
@@ -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)
-- 
1.9.1

Reply via email to