mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-04 16:25:34 +00:00
ixgbevf: Handle previously-freed msix_entries
The msix_entries memory can be freed by a previous suspend or remove, so don't crash on close when it isn't there. Also only clear the interrupts when the interface is up, because there aren't any when it is not up. Signed-off-by: Mark Rustad <mark.d.rustad@intel.com> Tested-by: Krishneil Singh <krishneil.k.singh@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
9f3c7504fa
commit
eeffceee42
1 changed files with 7 additions and 2 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue