ixgbevf: don't release the soft entries
authorxunleer <xunleer.li@huawei.com>
Tue, 5 Mar 2013 07:44:20 +0000 (07:44 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Tue, 26 Mar 2013 09:31:48 +0000 (02:31 -0700)
commita1f6c6b147cc5e83ec36dab8370bd5ec5fa1def6
tree5280251d7b50fa2645d05796d801561da27f498e
parenta79ca223e029aa4f09abb337accf1812c900a800
ixgbevf: don't release the soft entries

When the ixgbevf driver is opened the request to allocate MSIX irq
vectors may fail.  In that case the driver will call ixgbevf_down()
which will call ixgbevf_irq_disable() to clear the HW interrupt
registers and calls synchronize_irq() using the msix_entries pointer in
the adapter structure.  However, when the function to request the MSIX
irq vectors failed it had already freed the msix_entries which causes
an OOPs from using the NULL pointer in synchronize_irq().

The calls to pci_disable_msix() and to free the msix_entries memory
should not occur if device open fails.  Instead they should be called
during device driver removal to balance with the call to
pci_enable_msix() and the call to allocate msix_entries memory
during the device probe and driver load.

Signed-off-by: Li Xun <xunleer.li@huawei.com>
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c