From: Alexander Duyck <redacted>
We were incorrectly freeing IRQs that we had not requested. This change
corrects that by making certain we only free q_vectors that we have
requested IRQs for.
Signed-off-by: Alexander Duyck <redacted>
Tested-by: Ross Brattain <redacted>
Tested-by: Stephen Ko <redacted>
Signed-off-by: Jeff Kirsher <redacted>
---
drivers/net/ixgbe/ixgbe_main.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index f0d0c5a..588661b 100644
--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/drivers/net/ixgbe/ixgbe_main.c
@@ -2597,6 +2597,11 @@ static void ixgbe_free_irq(struct ixgbe_adapter *adapter)
i--;
for (; i >= 0; i--) {
+ /* free only the irqs that were actually requested */
+ if (!adapter->q_vector[i]->rxr_count &&
+ !adapter->q_vector[i]->txr_count)
+ continue;
+
free_irq(adapter->msix_entries[i].vector,
adapter->q_vector[i]);
}--
1.7.4