]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
ixgbevf: Handle previously-freed msix_entries
[karo-tx-linux.git] / drivers / net / ethernet / intel / ixgbevf / ixgbevf_main.c
index d2775f032f74e7676abbd6b1abdaa4f4fce282ad..d316f503a7279c8e9c608199a6966bfd9a2639b3 100644 (file)
@@ -1498,6 +1498,9 @@ static void ixgbevf_free_irq(struct ixgbevf_adapter *adapter)
 {
        int i, q_vectors;
 
+       if (!adapter->msix_entries)
+               return;
+
        q_vectors = adapter->num_msix_vectors;
        i = q_vectors - 1;
 
@@ -2552,6 +2555,9 @@ static void ixgbevf_free_q_vectors(struct ixgbevf_adapter *adapter)
  **/
 static void ixgbevf_reset_interrupt_capability(struct ixgbevf_adapter *adapter)
 {
+       if (!adapter->msix_entries)
+               return;
+
        pci_disable_msix(adapter->pdev);
        kfree(adapter->msix_entries);
        adapter->msix_entries = NULL;
@@ -3794,11 +3800,10 @@ static int ixgbevf_suspend(struct pci_dev *pdev, pm_message_t state)
                ixgbevf_free_irq(adapter);
                ixgbevf_free_all_tx_resources(adapter);
                ixgbevf_free_all_rx_resources(adapter);
+               ixgbevf_clear_interrupt_scheme(adapter);
                rtnl_unlock();
        }
 
-       ixgbevf_clear_interrupt_scheme(adapter);
-
 #ifdef CONFIG_PM
        retval = pci_save_state(pdev);
        if (retval)