Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mdio-sun4i: oops in error handling in probe

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>

authored by

Dan Carpenter and committed by
David S. Miller
227f33be abc34d75

+3 -1
+3 -1
drivers/net/phy/mdio-sun4i.c
··· 122 122 return -EPROBE_DEFER; 123 123 124 124 dev_info(&pdev->dev, "no regulator found\n"); 125 + data->regulator = NULL; 125 126 } else { 126 127 ret = regulator_enable(data->regulator); 127 128 if (ret) ··· 138 137 return 0; 139 138 140 139 err_out_disable_regulator: 141 - regulator_disable(data->regulator); 140 + if (data->regulator) 141 + regulator_disable(data->regulator); 142 142 err_out_free_mdiobus: 143 143 mdiobus_free(bus); 144 144 return ret;