Commit d31944d6 authored by Mitch Williams's avatar Mitch Williams Committed by David S. Miller

i40evf: don't leak queue vectors

Fix a memory leak. Driver was allocating memory for queue vectors on
init but not freeing them on shutdown. These need to be freed at two
different times: during module unload, and during reset recovery when
the driver cannot contact the PF driver and needs to give up.

Change-ID: I7c1d0157a776e960d4da432dfe309035aad7c670
Signed-off-by: default avatarMitch Williams <mitch.a.williams@intel.com>
Tested-by: default avatarSibai Li <sibai.li@intel.com>
Signed-off-by: default avatarAaron Brown <aaron.f.brown@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d3e2edb7
...@@ -1542,6 +1542,7 @@ static void i40evf_reset_task(struct work_struct *work) ...@@ -1542,6 +1542,7 @@ static void i40evf_reset_task(struct work_struct *work)
i40evf_free_misc_irq(adapter); i40evf_free_misc_irq(adapter);
i40evf_reset_interrupt_capability(adapter); i40evf_reset_interrupt_capability(adapter);
i40evf_free_queues(adapter); i40evf_free_queues(adapter);
i40evf_free_q_vectors(adapter);
kfree(adapter->vf_res); kfree(adapter->vf_res);
i40evf_shutdown_adminq(hw); i40evf_shutdown_adminq(hw);
adapter->netdev->flags &= ~IFF_UP; adapter->netdev->flags &= ~IFF_UP;
...@@ -2429,6 +2430,7 @@ static void i40evf_remove(struct pci_dev *pdev) ...@@ -2429,6 +2430,7 @@ static void i40evf_remove(struct pci_dev *pdev)
i40evf_misc_irq_disable(adapter); i40evf_misc_irq_disable(adapter);
i40evf_free_misc_irq(adapter); i40evf_free_misc_irq(adapter);
i40evf_reset_interrupt_capability(adapter); i40evf_reset_interrupt_capability(adapter);
i40evf_free_q_vectors(adapter);
} }
if (adapter->watchdog_timer.function) if (adapter->watchdog_timer.function)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment