ks8851: Fix freed memory reference in probe failure
If ks8851_probe fails, deregister the regulator devices,
which are part of the ks structure, before freeing the
network device rather than dereferencing a freed pointer.
The regulator devices need to be deregistered before the
network device is freed because the private pointer (ks)
is part of the ndev structure.
Change-Id: Id8e7b25e26dbae2c038f6f018931fc25efbf5cff
Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
diff --git a/drivers/net/ks8851.c b/drivers/net/ks8851.c
index 74b6ac2..e338aed 100644
--- a/drivers/net/ks8851.c
+++ b/drivers/net/ks8851.c
@@ -1723,8 +1723,6 @@
err_id:
err_irq:
- free_netdev(ndev);
-
if (!IS_ERR(ks->vdd_io)) {
regulator_disable(ks->vdd_io);
regulator_put(ks->vdd_io);
@@ -1735,6 +1733,8 @@
regulator_put(ks->vdd_phy);
}
+ free_netdev(ndev);
+
if (pdata && gpio_is_valid(pdata->rst_gpio))
gpio_free(pdata->rst_gpio);