ethernet: sun: Free the coherent when failing in probing
authorZheyu Ma <zheyuma97@gmail.com>
Sat, 5 Mar 2022 14:55:04 +0000 (14:55 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 8 Apr 2022 12:22:47 +0000 (14:22 +0200)
[ Upstream commit bb77bd31c281f70ec77c9c4f584950a779e05cf8 ]

When the driver fails to register net device, it should free the DMA
region first, and then do other cleanup.

Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/sun/sunhme.c

index 62f81b0d14ed8f0c6c74465f24a5be0ecf7ed684..b05ee2e0e3051b72b35e984c9a015bcd450c104e 100644 (file)
@@ -3139,7 +3139,7 @@ static int happy_meal_pci_probe(struct pci_dev *pdev,
        if (err) {
                printk(KERN_ERR "happymeal(PCI): Cannot register net device, "
                       "aborting.\n");
-               goto err_out_iounmap;
+               goto err_out_free_coherent;
        }
 
        pci_set_drvdata(pdev, hp);
@@ -3172,6 +3172,10 @@ static int happy_meal_pci_probe(struct pci_dev *pdev,
 
        return 0;
 
+err_out_free_coherent:
+       dma_free_coherent(hp->dma_dev, PAGE_SIZE,
+                         hp->happy_block, hp->hblock_dvma);
+
 err_out_iounmap:
        iounmap(hp->gregs);