summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlya Yanok <yanok@emcraft.com>2011-02-21 10:20:30 +0000
committerDavid S. Miller <davem@davemloft.net>2011-02-28 12:22:21 -0800
commitb093dd96844186cd03318aaf0cd96f91db3970ef (patch)
treea1cdddbb0ef6e3860bd9d9b44e13736d3776931a
parent915239472a5015c7667025551a73e11d6e2abee0 (diff)
downloadlinux-stable-b093dd96844186cd03318aaf0cd96f91db3970ef.tar.gz
linux-stable-b093dd96844186cd03318aaf0cd96f91db3970ef.tar.bz2
linux-stable-b093dd96844186cd03318aaf0cd96f91db3970ef.zip
dnet: fix wrong use of platform_set_drvdata()
platform_set_drvdata() was used with argument of incorrect type and could cause memory corruption. Moreover, because of not setting drvdata in the correct place not all resources were freed upon module unload. Signed-off-by: Ilya Yanok <yanok@emcraft.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/dnet.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/net/dnet.c b/drivers/net/dnet.c
index 9d8a20b72fa9..8318ea06cb6d 100644
--- a/drivers/net/dnet.c
+++ b/drivers/net/dnet.c
@@ -337,8 +337,6 @@ static int dnet_mii_init(struct dnet *bp)
for (i = 0; i < PHY_MAX_ADDR; i++)
bp->mii_bus->irq[i] = PHY_POLL;
- platform_set_drvdata(bp->dev, bp->mii_bus);
-
if (mdiobus_register(bp->mii_bus)) {
err = -ENXIO;
goto err_out_free_mdio_irq;
@@ -863,6 +861,7 @@ static int __devinit dnet_probe(struct platform_device *pdev)
bp = netdev_priv(dev);
bp->dev = dev;
+ platform_set_drvdata(pdev, dev);
SET_NETDEV_DEV(dev, &pdev->dev);
spin_lock_init(&bp->lock);