gc->irq_contexts is not freeded if one of the later operations
fail.

Suggested-by: Michael Kelley <mhkli...@outlook.com>
Fixes: 8afefc361209 ("net: mana: Assigning IRQ affinity on HT cores")
Signed-off-by: Maxim Levitsky <mlevi...@redhat.com>
---
 drivers/net/ethernet/microsoft/mana/gdma_main.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/microsoft/mana/gdma_main.c 
b/drivers/net/ethernet/microsoft/mana/gdma_main.c
index aba188f9f10f..6297c0869cd6 100644
--- a/drivers/net/ethernet/microsoft/mana/gdma_main.c
+++ b/drivers/net/ethernet/microsoft/mana/gdma_main.c
@@ -1318,7 +1318,7 @@ static int mana_gd_setup_irqs(struct pci_dev *pdev)
                                   GFP_KERNEL);
        if (!gc->irq_contexts) {
                err = -ENOMEM;
-               goto free_irq_vector;
+               goto free_irq_array;
        }
 
        for (i = 0; i < nvec; i++) {
@@ -1388,8 +1388,9 @@ static int mana_gd_setup_irqs(struct pci_dev *pdev)
        }
 
        kfree(gc->irq_contexts);
-       kfree(irqs);
        gc->irq_contexts = NULL;
+free_irq_array:
+       kfree(irqs);
 free_irq_vector:
        cpus_read_unlock();
        pci_free_irq_vectors(pdev);
-- 
2.26.3


Reply via email to