ethernet: tundra: free irq when alloc ring failed in tsi108_open()
authorZhengchao Shao <shaozhengchao@huawei.com>
Wed, 9 Nov 2022 04:40:16 +0000 (12:40 +0800)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 10 Nov 2022 14:39:08 +0000 (15:39 +0100)
When alloc tx/rx ring failed in tsi108_open(), it doesn't free irq. Fix
it.

Fixes: 5e123b844a1c ("[PATCH] Add tsi108/9 On Chip Ethernet device driver support")
Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com>
Link: https://lore.kernel.org/r/20221109044016.126866-1-shaozhengchao@huawei.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/tundra/tsi108_eth.c

index 2cd2afc..d09d352 100644 (file)
@@ -1290,12 +1290,15 @@ static int tsi108_open(struct net_device *dev)
 
        data->rxring = dma_alloc_coherent(&data->pdev->dev, rxring_size,
                                          &data->rxdma, GFP_KERNEL);
-       if (!data->rxring)
+       if (!data->rxring) {
+               free_irq(data->irq_num, dev);
                return -ENOMEM;
+       }
 
        data->txring = dma_alloc_coherent(&data->pdev->dev, txring_size,
                                          &data->txdma, GFP_KERNEL);
        if (!data->txring) {
+               free_irq(data->irq_num, dev);
                dma_free_coherent(&data->pdev->dev, rxring_size, data->rxring,
                                    data->rxdma);
                return -ENOMEM;