]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
net: davicom: Fix regulator not turned off on failed probe
authorPaul Cercueil <paul@crapouillou.net>
Sun, 7 Mar 2021 13:17:47 +0000 (13:17 +0000)
committerSeth Forshee <seth.forshee@canonical.com>
Wed, 17 Mar 2021 18:37:43 +0000 (13:37 -0500)
BugLink: https://bugs.launchpad.net/bugs/1919492
commit ac88c531a5b38877eba2365a3f28f0c8b513dc33 upstream.

When the probe fails or requests to be defered, we must disable the
regulator that was previously enabled.

Fixes: 7994fe55a4a2 ("dm9000: Add regulator and reset support to dm9000")
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
drivers/net/ethernet/davicom/dm9000.c

index 3fdc70dab5c141a74b536e88ecff8d9730d276c4..ae744826bb9e25a4b9df9cbdd434eb2a645d1ea6 100644 (file)
@@ -1449,7 +1449,7 @@ dm9000_probe(struct platform_device *pdev)
                if (ret) {
                        dev_err(dev, "failed to request reset gpio %d: %d\n",
                                reset_gpios, ret);
-                       return -ENODEV;
+                       goto out_regulator_disable;
                }
 
                /* According to manual PWRST# Low Period Min 1ms */
@@ -1461,8 +1461,10 @@ dm9000_probe(struct platform_device *pdev)
 
        if (!pdata) {
                pdata = dm9000_parse_dt(&pdev->dev);
-               if (IS_ERR(pdata))
-                       return PTR_ERR(pdata);
+               if (IS_ERR(pdata)) {
+                       ret = PTR_ERR(pdata);
+                       goto out_regulator_disable;
+               }
        }
 
        /* Init network device */
@@ -1703,6 +1705,10 @@ out:
        dm9000_release_board(pdev, db);
        free_netdev(ndev);
 
+out_regulator_disable:
+       if (!IS_ERR(power))
+               regulator_disable(power);
+
        return ret;
 }