• xunleer's avatar
    ixgbevf: don't release the soft entries · a1f6c6b1
    xunleer authored
    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: default avatarLi Xun <xunleer.li@huawei.com>
    Signed-off-by: default avatarGreg Rose <gregory.v.rose@intel.com>
    Tested-by: default avatarSibai Li <sibai.li@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    a1f6c6b1
ixgbevf_main.c 96 KB