mdio-sun4i: oops in error handling in probe
authorDan Carpenter <dan.carpenter@oracle.com>
Mon, 21 Mar 2016 09:02:31 +0000 (12:02 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 21 Mar 2016 15:30:01 +0000 (11:30 -0400)
We could end up dereferencing an error pointer when we call
regulator_disable().

Fixes: 4bdcb1dd9feb ('net: Add MDIO bus driver for the Allwinner EMAC')
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/mdio-sun4i.c

index f70522c..1352965 100644 (file)
@@ -122,6 +122,7 @@ static int sun4i_mdio_probe(struct platform_device *pdev)
                        return -EPROBE_DEFER;
 
                dev_info(&pdev->dev, "no regulator found\n");
+               data->regulator = NULL;
        } else {
                ret = regulator_enable(data->regulator);
                if (ret)
@@ -137,7 +138,8 @@ static int sun4i_mdio_probe(struct platform_device *pdev)
        return 0;
 
 err_out_disable_regulator:
-       regulator_disable(data->regulator);
+       if (data->regulator)
+               regulator_disable(data->regulator);
 err_out_free_mdiobus:
        mdiobus_free(bus);
        return ret;