Skip to content

Commit ae29223

Browse files
himangi774davem330
authored andcommitted
net: dnet: Use managed interfaces
This patch introduces the use of managed interfaces like devm_ioremap_resource and does away with the calls to free the allocated memory in the probe and remove functions. Also, some labels and variable are done away with. This fixes a bug as there was a missing release_mem_region in the remove function. Signed-off-by: Himangi Saraogi <himangi774@gmail.com> Acked-by: Julia Lawall <julia.lawall@lip6.fr> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 5478998 commit ae29223

File tree

1 file changed

+12
-34
lines changed

1 file changed

+12
-34
lines changed

drivers/net/ethernet/dnet.c

Lines changed: 12 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,8 @@ static int dnet_mii_init(struct dnet *bp)
323323

324324
bp->mii_bus->priv = bp;
325325

326-
bp->mii_bus->irq = kmalloc(sizeof(int) * PHY_MAX_ADDR, GFP_KERNEL);
326+
bp->mii_bus->irq = devm_kmalloc(&bp->pdev->dev,
327+
sizeof(int) * PHY_MAX_ADDR, GFP_KERNEL);
327328
if (!bp->mii_bus->irq) {
328329
err = -ENOMEM;
329330
goto err_out;
@@ -334,7 +335,7 @@ static int dnet_mii_init(struct dnet *bp)
334335

335336
if (mdiobus_register(bp->mii_bus)) {
336337
err = -ENXIO;
337-
goto err_out_free_mdio_irq;
338+
goto err_out;
338339
}
339340

340341
if (dnet_mii_probe(bp->dev) != 0) {
@@ -346,8 +347,6 @@ static int dnet_mii_init(struct dnet *bp)
346347

347348
err_out_unregister_bus:
348349
mdiobus_unregister(bp->mii_bus);
349-
err_out_free_mdio_irq:
350-
kfree(bp->mii_bus->irq);
351350
err_out:
352351
mdiobus_free(bp->mii_bus);
353352
return err;
@@ -825,28 +824,14 @@ static int dnet_probe(struct platform_device *pdev)
825824
struct net_device *dev;
826825
struct dnet *bp;
827826
struct phy_device *phydev;
828-
int err = -ENXIO;
829-
unsigned int mem_base, mem_size, irq;
827+
int err;
828+
unsigned int irq;
830829

831-
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
832-
if (!res) {
833-
dev_err(&pdev->dev, "no mmio resource defined\n");
834-
goto err_out;
835-
}
836-
mem_base = res->start;
837-
mem_size = resource_size(res);
838830
irq = platform_get_irq(pdev, 0);
839831

840-
if (!request_mem_region(mem_base, mem_size, DRV_NAME)) {
841-
dev_err(&pdev->dev, "no memory region available\n");
842-
err = -EBUSY;
843-
goto err_out;
844-
}
845-
846-
err = -ENOMEM;
847832
dev = alloc_etherdev(sizeof(*bp));
848833
if (!dev)
849-
goto err_out_release_mem;
834+
return -ENOMEM;
850835

851836
/* TODO: Actually, we have some interesting features... */
852837
dev->features |= 0;
@@ -859,10 +844,10 @@ static int dnet_probe(struct platform_device *pdev)
859844

860845
spin_lock_init(&bp->lock);
861846

862-
bp->regs = ioremap(mem_base, mem_size);
863-
if (!bp->regs) {
864-
dev_err(&pdev->dev, "failed to map registers, aborting.\n");
865-
err = -ENOMEM;
847+
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
848+
bp->regs = devm_ioremap_resource(&pdev->dev, res);
849+
if (IS_ERR(bp->regs)) {
850+
err = PTR_ERR(bp->regs);
866851
goto err_out_free_dev;
867852
}
868853

@@ -871,7 +856,7 @@ static int dnet_probe(struct platform_device *pdev)
871856
if (err) {
872857
dev_err(&pdev->dev, "Unable to request IRQ %d (error %d)\n",
873858
irq, err);
874-
goto err_out_iounmap;
859+
goto err_out_free_dev;
875860
}
876861

877862
dev->netdev_ops = &dnet_netdev_ops;
@@ -908,7 +893,7 @@ static int dnet_probe(struct platform_device *pdev)
908893
goto err_out_unregister_netdev;
909894

910895
dev_info(&pdev->dev, "Dave DNET at 0x%p (0x%08x) irq %d %pM\n",
911-
bp->regs, mem_base, dev->irq, dev->dev_addr);
896+
bp->regs, (unsigned int)res->start, dev->irq, dev->dev_addr);
912897
dev_info(&pdev->dev, "has %smdio, %sirq, %sgigabit, %sdma\n",
913898
(bp->capabilities & DNET_HAS_MDIO) ? "" : "no ",
914899
(bp->capabilities & DNET_HAS_IRQ) ? "" : "no ",
@@ -925,13 +910,8 @@ static int dnet_probe(struct platform_device *pdev)
925910
unregister_netdev(dev);
926911
err_out_free_irq:
927912
free_irq(dev->irq, dev);
928-
err_out_iounmap:
929-
iounmap(bp->regs);
930913
err_out_free_dev:
931914
free_netdev(dev);
932-
err_out_release_mem:
933-
release_mem_region(mem_base, mem_size);
934-
err_out:
935915
return err;
936916
}
937917

@@ -948,11 +928,9 @@ static int dnet_remove(struct platform_device *pdev)
948928
if (bp->phy_dev)
949929
phy_disconnect(bp->phy_dev);
950930
mdiobus_unregister(bp->mii_bus);
951-
kfree(bp->mii_bus->irq);
952931
mdiobus_free(bp->mii_bus);
953932
unregister_netdev(dev);
954933
free_irq(dev->irq, dev);
955-
iounmap(bp->regs);
956934
free_netdev(dev);
957935
}
958936

0 commit comments

Comments
 (0)