From 919f00afb58e4db99c5dc53a3c1345c3f7b0c097 Mon Sep 17 00:00:00 2001 From: Devendra Naga Date: Tue, 29 May 2012 13:43:34 +0000 Subject: [PATCH] r6040: Do a Proper deinit at errorpath and also when driver unloads (calling r6040_remove_one) so if mdiobus_alloc fails, the errorpath doesnt do a netif_napi_del and also doesn't set the priv data of the driver to NULL. at the driver unload stage the driver doesn't remove the NAPI context, and doesnt' set the priv data to NULL, and also doesn't call the pci_iounmap. Signed-off-by: Devendra Naga Signed-off-by: David S. Miller --- drivers/net/ethernet/rdc/r6040.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/ethernet/rdc/r6040.c b/drivers/net/ethernet/rdc/r6040.c index f5e6f1f4f4743..d1827e887f4e9 100644 --- a/drivers/net/ethernet/rdc/r6040.c +++ b/drivers/net/ethernet/rdc/r6040.c @@ -1233,6 +1233,8 @@ err_out_mdio_irq: err_out_mdio: mdiobus_free(lp->mii_bus); err_out_unmap: + netif_napi_del(&lp->napi); + pci_set_drvdata(pdev, NULL); pci_iounmap(pdev, ioaddr); err_out_free_res: pci_release_regions(pdev); @@ -1253,6 +1255,9 @@ static void __devexit r6040_remove_one(struct pci_dev *pdev) mdiobus_unregister(lp->mii_bus); kfree(lp->mii_bus->irq); mdiobus_free(lp->mii_bus); + netif_napi_del(&lp->napi); + pci_set_drvdata(pdev, NULL); + pci_iounmap(pdev, lp->base); pci_release_regions(pdev); free_netdev(dev); pci_disable_device(pdev); -- 2.39.5