i40evf: don't leak queue vectors
authorMitch Williams <mitch.a.williams@intel.com>
Fri, 1 Aug 2014 20:27:13 +0000 (13:27 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sun, 3 Aug 2014 02:41:15 +0000 (19:41 -0700)
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: Mitch Williams <mitch.a.williams@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/intel/i40evf/i40evf_main.c

index 2aca9cf4511901e973e6a9c9abde6f4daa31ba84..0c4f7baffad6b53c40322c748ae6cea8f6649b1a 100644 (file)
@@ -1542,6 +1542,7 @@ static void i40evf_reset_task(struct work_struct *work)
                i40evf_free_misc_irq(adapter);
                i40evf_reset_interrupt_capability(adapter);
                i40evf_free_queues(adapter);
+               i40evf_free_q_vectors(adapter);
                kfree(adapter->vf_res);
                i40evf_shutdown_adminq(hw);
                adapter->netdev->flags &= ~IFF_UP;
@@ -2429,6 +2430,7 @@ static void i40evf_remove(struct pci_dev *pdev)
                i40evf_misc_irq_disable(adapter);
                i40evf_free_misc_irq(adapter);
                i40evf_reset_interrupt_capability(adapter);
+               i40evf_free_q_vectors(adapter);
        }
 
        if (adapter->watchdog_timer.function)