aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBin Liu <b-liu@ti.com>2012-08-30 06:37:32 +0000
committerDavid S. Miller <davem@davemloft.net>2012-08-31 16:35:07 -0400
commitb27393aecf66199f5ddad37c302d3e0cfadbe6c0 (patch)
tree4c49812f7e3700ab1faa8ee706c22c2c80342b74
parentnet/xfrm/xfrm_state.c: fix error return code (diff)
downloadlinux-dev-b27393aecf66199f5ddad37c302d3e0cfadbe6c0.tar.xz
linux-dev-b27393aecf66199f5ddad37c302d3e0cfadbe6c0.zip
net: ethernet: fix kernel OOPS when remove davinci_mdio module
davinci mdio device is not unregistered from mdiobus when removing the module, which causes BUG_ON() when free the device from mdiobus. Calling mdiobus_unregister() before mdiobus_free() fixes the issue. Signed-off-by: Bin Liu <b-liu@ti.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/ti/davinci_mdio.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/ethernet/ti/davinci_mdio.c b/drivers/net/ethernet/ti/davinci_mdio.c
index cd7ee204e94a..a9ca4a03d31b 100644
--- a/drivers/net/ethernet/ti/davinci_mdio.c
+++ b/drivers/net/ethernet/ti/davinci_mdio.c
@@ -394,8 +394,10 @@ static int __devexit davinci_mdio_remove(struct platform_device *pdev)
struct device *dev = &pdev->dev;
struct davinci_mdio_data *data = dev_get_drvdata(dev);
- if (data->bus)
+ if (data->bus) {
+ mdiobus_unregister(data->bus);
mdiobus_free(data->bus);
+ }
if (data->clk)
clk_put(data->clk);