Преглед на файлове

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>
Alexander Duyck преди 14 години
родител
ревизия
2b1588c3fa
променени са 1 файла, в които са добавени 5 реда и са изтрити 4 реда
  1. 5 4
      drivers/net/ethernet/intel/ixgbe/ixgbe_main.c

+ 5 - 4
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c

@@ -4873,10 +4873,6 @@ static int __ixgbe_shutdown(struct pci_dev *pdev, bool *enable_wake)
 	}
 	}
 
 
 	ixgbe_clear_interrupt_scheme(adapter);
 	ixgbe_clear_interrupt_scheme(adapter);
-#ifdef CONFIG_DCB
-	kfree(adapter->ixgbe_ieee_pfc);
-	kfree(adapter->ixgbe_ieee_ets);
-#endif
 
 
 #ifdef CONFIG_PM
 #ifdef CONFIG_PM
 	retval = pci_save_state(pdev);
 	retval = pci_save_state(pdev);
@@ -7224,6 +7220,11 @@ static void __devexit ixgbe_remove(struct pci_dev *pdev)
 
 
 	ixgbe_release_hw_control(adapter);
 	ixgbe_release_hw_control(adapter);
 
 
+#ifdef CONFIG_DCB
+	kfree(adapter->ixgbe_ieee_pfc);
+	kfree(adapter->ixgbe_ieee_ets);
+
+#endif
 	iounmap(adapter->hw.hw_addr);
 	iounmap(adapter->hw.hw_addr);
 	pci_release_selected_regions(pdev, pci_select_bars(pdev,
 	pci_release_selected_regions(pdev, pci_select_bars(pdev,
 				     IORESOURCE_MEM));
 				     IORESOURCE_MEM));