EDAC/al_mc: Make use of the helper function devm_add_action_or_reset()
authorCai Huoqing <caihuoqing@baidu.com>
Wed, 22 Sep 2021 12:59:23 +0000 (20:59 +0800)
committerBorislav Petkov <bp@suse.de>
Tue, 28 Sep 2021 16:35:11 +0000 (18:35 +0200)
The helper function devm_add_action_or_reset() will internally call
devm_add_action(), and if devm_add_action() fails then it will
execute the action mentioned and return the error code. So use
devm_add_action_or_reset() instead of devm_add_action() to simplify the
error handling, reduce the code.

Signed-off-by: Cai Huoqing <caihuoqing@baidu.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Acked-by: Talel Shenhar <talel@amazon.com>
Link: https://lkml.kernel.org/r/20210922125924.321-1-caihuoqing@baidu.com
drivers/edac/al_mc_edac.c

index 7d4f396c27b5545e1b583030aabcd4bb64e07f21..178b9e581a72788de2c546bdd8b2cc5b6af25361 100644 (file)
@@ -238,11 +238,9 @@ static int al_mc_edac_probe(struct platform_device *pdev)
        if (!mci)
                return -ENOMEM;
 
-       ret = devm_add_action(&pdev->dev, devm_al_mc_edac_free, mci);
-       if (ret) {
-               edac_mc_free(mci);
+       ret = devm_add_action_or_reset(&pdev->dev, devm_al_mc_edac_free, mci);
+       if (ret)
                return ret;
-       }
 
        platform_set_drvdata(pdev, mci);
        al_mc = mci->pvt_info;
@@ -293,11 +291,9 @@ static int al_mc_edac_probe(struct platform_device *pdev)
                return ret;
        }
 
-       ret = devm_add_action(&pdev->dev, devm_al_mc_edac_del, &pdev->dev);
-       if (ret) {
-               edac_mc_del_mc(&pdev->dev);
+       ret = devm_add_action_or_reset(&pdev->dev, devm_al_mc_edac_del, &pdev->dev);
+       if (ret)
                return ret;
-       }
 
        if (al_mc->irq_ue > 0) {
                ret = devm_request_irq(&pdev->dev,