Skip to content

Commit

Permalink
ixgbe: fix crash on rmmod after probe fail
Browse files Browse the repository at this point in the history
The driver has logic to free up used data in case any of the checks in
ixgbe_probe() fail, however there is a similar set of cleanups that can
occur on driver unload in ixgbe_remove() which can cause the rmmod command
to crash.

This patch aims to fix the logic by moving pci_set_drvdata() after all error
checks and then adds a check in ixgbe_remove() to skip it altogether if
adapter comes up empty.

Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
  • Loading branch information
Emil Tantilov authored and Jeff Kirsher committed Dec 5, 2014
1 parent 9be4a9b commit 0fb6a55
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -8206,7 +8206,6 @@ static int ixgbe_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
SET_NETDEV_DEV(netdev, &pdev->dev);

adapter = netdev_priv(netdev);
pci_set_drvdata(pdev, adapter);

adapter->netdev = netdev;
adapter->pdev = pdev;
Expand Down Expand Up @@ -8486,6 +8485,8 @@ static int ixgbe_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
if (err)
goto err_register;

pci_set_drvdata(pdev, adapter);

/* power down the optics for 82599 SFP+ fiber */
if (hw->mac.ops.disable_tx_laser)
hw->mac.ops.disable_tx_laser(hw);
Expand Down Expand Up @@ -8565,9 +8566,14 @@ static int ixgbe_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
static void ixgbe_remove(struct pci_dev *pdev)
{
struct ixgbe_adapter *adapter = pci_get_drvdata(pdev);
struct net_device *netdev = adapter->netdev;
struct net_device *netdev;
bool disable_dev;

/* if !adapter then we already cleaned up in probe */
if (!adapter)
return;

netdev = adapter->netdev;
ixgbe_dbg_adapter_exit(adapter);

set_bit(__IXGBE_REMOVING, &adapter->state);
Expand Down

0 comments on commit 0fb6a55

Please sign in to comment.