aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bfin_mac.c
diff options
context:
space:
mode:
authorSonic Zhang <sonic.zhang@analog.com>2010-05-10 01:39:14 -0400
committerDavid S. Miller <davem@davemloft.net>2010-05-17 20:21:01 -0400
commit0e995cd3d3c78377a0bc7d38236fc50e5438fabb (patch)
tree5525fe8194257fb9a2d47d7b8d3bf4b4e80131c6 /drivers/net/bfin_mac.c
parent2bfa0f0c9a37460ee69128da411f6d310c1c983d (diff)
netdev: bfin_mac: check for mii_bus platform data
If the platform data for the mii_bus is missing, gracefully error out rather than deference NULL pointers. Signed-off-by: Sonic Zhang <sonic.zhang@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bfin_mac.c')
-rw-r--r--drivers/net/bfin_mac.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/bfin_mac.c b/drivers/net/bfin_mac.c
index 2538eaa891ad..39a54bad397f 100644
--- a/drivers/net/bfin_mac.c
+++ b/drivers/net/bfin_mac.c
@@ -1466,6 +1466,11 @@ static int __devinit bfin_mac_probe(struct platform_device *pdev)
1466 } 1466 }
1467 pd = pdev->dev.platform_data; 1467 pd = pdev->dev.platform_data;
1468 lp->mii_bus = platform_get_drvdata(pd); 1468 lp->mii_bus = platform_get_drvdata(pd);
1469 if (!lp->mii_bus) {
1470 dev_err(&pdev->dev, "Cannot get mii_bus!\n");
1471 rc = -ENODEV;
1472 goto out_err_mii_bus_probe;
1473 }
1469 lp->mii_bus->priv = ndev; 1474 lp->mii_bus->priv = ndev;
1470 1475
1471 rc = mii_probe(ndev); 1476 rc = mii_probe(ndev);
@@ -1511,6 +1516,7 @@ out_err_request_irq:
1511out_err_mii_probe: 1516out_err_mii_probe:
1512 mdiobus_unregister(lp->mii_bus); 1517 mdiobus_unregister(lp->mii_bus);
1513 mdiobus_free(lp->mii_bus); 1518 mdiobus_free(lp->mii_bus);
1519out_err_mii_bus_probe:
1514 peripheral_free_list(pin_req); 1520 peripheral_free_list(pin_req);
1515out_err_probe_mac: 1521out_err_probe_mac:
1516 platform_set_drvdata(pdev, NULL); 1522 platform_set_drvdata(pdev, NULL);