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
        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;
                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,