mirror of
https://github.com/torvalds/linux.git
synced 2024-11-16 17:12:06 +00:00
mlx4_core: Don't double-free IRQs when falling back from MSI-X to INTx
When both MSI-X and legacy INTx fail to generate an interrupt, the driver frees the MSI-X interrupts twice. Fix this by clearing the have_irq flag for the MSI-X interrupts when they are freed the first time. This is the same bug that was reported in ib_mthca by Yinghai Lu <yhlu.kernel@gmail.com>. Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
9aa0a489d9
commit
d1fdf24b40
@ -497,8 +497,10 @@ static void mlx4_free_irqs(struct mlx4_dev *dev)
|
||||
if (eq_table->have_irq)
|
||||
free_irq(dev->pdev->irq, dev);
|
||||
for (i = 0; i < dev->caps.num_comp_vectors + 1; ++i)
|
||||
if (eq_table->eq[i].have_irq)
|
||||
if (eq_table->eq[i].have_irq) {
|
||||
free_irq(eq_table->eq[i].irq, eq_table->eq + i);
|
||||
eq_table->eq[i].have_irq = 0;
|
||||
}
|
||||
|
||||
kfree(eq_table->irq_names);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user