intel/igbvf: free irq on the error path in igbvf_request_msix()
[ Upstream commit 85eb39bb39cbb5c086df1e19ba67cc1366693a77 ]
In igbvf_request_msix(), irqs have not been freed on the err path,
we need to free it. Fix it.
Fixes: d4e0fe01a3
("igbvf: add new driver to support 82576 virtual functions")
Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>
Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Tested-by: Marek Szlosek <marek.szlosek@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
155d6d434f
commit
fe3850c72a
@@ -1074,7 +1074,7 @@ static int igbvf_request_msix(struct igbvf_adapter *adapter)
|
|||||||
igbvf_intr_msix_rx, 0, adapter->rx_ring->name,
|
igbvf_intr_msix_rx, 0, adapter->rx_ring->name,
|
||||||
netdev);
|
netdev);
|
||||||
if (err)
|
if (err)
|
||||||
goto out;
|
goto free_irq_tx;
|
||||||
|
|
||||||
adapter->rx_ring->itr_register = E1000_EITR(vector);
|
adapter->rx_ring->itr_register = E1000_EITR(vector);
|
||||||
adapter->rx_ring->itr_val = adapter->current_itr;
|
adapter->rx_ring->itr_val = adapter->current_itr;
|
||||||
@@ -1083,10 +1083,14 @@ static int igbvf_request_msix(struct igbvf_adapter *adapter)
|
|||||||
err = request_irq(adapter->msix_entries[vector].vector,
|
err = request_irq(adapter->msix_entries[vector].vector,
|
||||||
igbvf_msix_other, 0, netdev->name, netdev);
|
igbvf_msix_other, 0, netdev->name, netdev);
|
||||||
if (err)
|
if (err)
|
||||||
goto out;
|
goto free_irq_rx;
|
||||||
|
|
||||||
igbvf_configure_msix(adapter);
|
igbvf_configure_msix(adapter);
|
||||||
return 0;
|
return 0;
|
||||||
|
free_irq_rx:
|
||||||
|
free_irq(adapter->msix_entries[--vector].vector, netdev);
|
||||||
|
free_irq_tx:
|
||||||
|
free_irq(adapter->msix_entries[--vector].vector, netdev);
|
||||||
out:
|
out:
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user