diff options
author | Alexander Duyck <alexander.h.duyck@intel.com> | 2012-03-16 22:39:16 -0400 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2012-04-30 21:54:43 -0400 |
commit | 2b1588c3fafc3fd2b3bc49202a380eaecbbc2193 (patch) | |
tree | dc61fe55fbfdb5f74b0f31be5eac9956afde4559 /drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | |
parent | 9bd1be457d2b9568c3c8f8f6b8e450a501bff402 (diff) |
ixgbe: Fix a memory leak in IEEE DCB
The driver was freeing memory in shutdown instead of remove. As a result
we were leaking memory if IEEE DCB was enabled and we loaded/unloaded the
driver. This change moves the freeing of the memory into the remove
routine where it belongs.
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Acked-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/ixgbe/ixgbe_main.c')
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index a7f3cd872caf..88f6b2e9b72d 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | |||
@@ -4873,10 +4873,6 @@ static int __ixgbe_shutdown(struct pci_dev *pdev, bool *enable_wake) | |||
4873 | } | 4873 | } |
4874 | 4874 | ||
4875 | ixgbe_clear_interrupt_scheme(adapter); | 4875 | ixgbe_clear_interrupt_scheme(adapter); |
4876 | #ifdef CONFIG_DCB | ||
4877 | kfree(adapter->ixgbe_ieee_pfc); | ||
4878 | kfree(adapter->ixgbe_ieee_ets); | ||
4879 | #endif | ||
4880 | 4876 | ||
4881 | #ifdef CONFIG_PM | 4877 | #ifdef CONFIG_PM |
4882 | retval = pci_save_state(pdev); | 4878 | retval = pci_save_state(pdev); |
@@ -7224,6 +7220,11 @@ static void __devexit ixgbe_remove(struct pci_dev *pdev) | |||
7224 | 7220 | ||
7225 | ixgbe_release_hw_control(adapter); | 7221 | ixgbe_release_hw_control(adapter); |
7226 | 7222 | ||
7223 | #ifdef CONFIG_DCB | ||
7224 | kfree(adapter->ixgbe_ieee_pfc); | ||
7225 | kfree(adapter->ixgbe_ieee_ets); | ||
7226 | |||
7227 | #endif | ||
7227 | iounmap(adapter->hw.hw_addr); | 7228 | iounmap(adapter->hw.hw_addr); |
7228 | pci_release_selected_regions(pdev, pci_select_bars(pdev, | 7229 | pci_release_selected_regions(pdev, pci_select_bars(pdev, |
7229 | IORESOURCE_MEM)); | 7230 | IORESOURCE_MEM)); |