Use devm_add_action_or_reset() instead of devm_add_action()+hand writing
what is done in the release function, should an error occur.

This is more straightforward and saves a few lines of code.

While at it, remove a useless test in devm_backlight_release(). 'data' is
known to be not NULL when this function is called.

Signed-off-by: Christophe JAILLET <christophe.jail...@wanadoo.fr>
---
 drivers/video/backlight/backlight.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/drivers/video/backlight/backlight.c 
b/drivers/video/backlight/backlight.c
index 4ae6fae94ac2..b788ff3d0f45 100644
--- a/drivers/video/backlight/backlight.c
+++ b/drivers/video/backlight/backlight.c
@@ -710,8 +710,7 @@ static void devm_backlight_release(void *data)
 {
        struct backlight_device *bd = data;
 
-       if (bd)
-               put_device(&bd->dev);
+       put_device(&bd->dev);
 }
 
 /**
@@ -737,11 +736,10 @@ struct backlight_device *devm_of_find_backlight(struct 
device *dev)
        bd = of_find_backlight(dev);
        if (IS_ERR_OR_NULL(bd))
                return bd;
-       ret = devm_add_action(dev, devm_backlight_release, bd);
-       if (ret) {
-               put_device(&bd->dev);
+       ret = devm_add_action_or_reset(dev, devm_backlight_release, bd);
+       if (ret)
                return ERR_PTR(ret);
-       }
+
        return bd;
 }
 EXPORT_SYMBOL(devm_of_find_backlight);
-- 
2.32.0

Reply via email to