diff options
author | Ben Hutchings <bhutchings@solarflare.com> | 2012-04-04 19:22:19 -0400 |
---|---|---|
committer | Ben Hutchings <bhutchings@solarflare.com> | 2012-05-09 21:22:16 -0400 |
commit | 3de4e30196f09ff2c096f2f8e17ebc9adda9db8d (patch) | |
tree | dcb1901d793c467fa031046737c3ab12186944eb /drivers/net/ethernet/sfc/efx.c | |
parent | 3dca9d2dc285faf1910d405b65df845cab061356 (diff) |
sfc: Fix missing cleanup in failure path of efx_pci_probe()
We need to clear the private data pointer in the PCI device.
Also reorder cleanup in efx_pci_remove() for symmetry.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Diffstat (limited to 'drivers/net/ethernet/sfc/efx.c')
-rw-r--r-- | drivers/net/ethernet/sfc/efx.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c index 5cc58a3b75ac..8253d2155fe3 100644 --- a/drivers/net/ethernet/sfc/efx.c +++ b/drivers/net/ethernet/sfc/efx.c | |||
@@ -2497,8 +2497,8 @@ static void efx_pci_remove(struct pci_dev *pci_dev) | |||
2497 | efx_fini_io(efx); | 2497 | efx_fini_io(efx); |
2498 | netif_dbg(efx, drv, efx->net_dev, "shutdown successful\n"); | 2498 | netif_dbg(efx, drv, efx->net_dev, "shutdown successful\n"); |
2499 | 2499 | ||
2500 | pci_set_drvdata(pci_dev, NULL); | ||
2501 | efx_fini_struct(efx); | 2500 | efx_fini_struct(efx); |
2501 | pci_set_drvdata(pci_dev, NULL); | ||
2502 | free_netdev(efx->net_dev); | 2502 | free_netdev(efx->net_dev); |
2503 | }; | 2503 | }; |
2504 | 2504 | ||
@@ -2700,6 +2700,7 @@ static int __devinit efx_pci_probe(struct pci_dev *pci_dev, | |||
2700 | fail2: | 2700 | fail2: |
2701 | efx_fini_struct(efx); | 2701 | efx_fini_struct(efx); |
2702 | fail1: | 2702 | fail1: |
2703 | pci_set_drvdata(pci_dev, NULL); | ||
2703 | WARN_ON(rc > 0); | 2704 | WARN_ON(rc > 0); |
2704 | netif_dbg(efx, drv, efx->net_dev, "initialisation failed. rc=%d\n", rc); | 2705 | netif_dbg(efx, drv, efx->net_dev, "initialisation failed. rc=%d\n", rc); |
2705 | free_netdev(net_dev); | 2706 | free_netdev(net_dev); |