mt76: mt7921: Fix the error handling path of mt7921_pci_probe()
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Sun, 3 Apr 2022 15:40:33 +0000 (17:40 +0200)
committerFelix Fietkau <nbd@nbd.name>
Fri, 13 May 2022 07:39:34 +0000 (09:39 +0200)
In case of error, some resources must be freed, as already done above and
below the devm_kmemdup() and __mt7921e_mcu_drv_pmctrl() calls added in the
commit in Fixes:.

Fixes: 602cc0c9618a ("mt76: mt7921e: fix possible probe failure after reboot")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7921/pci.c

index 1a01d025bbe59d1134509d2abb846e8e297faa61..062e2b4224789b624493c64344e837c2009be4fc 100644 (file)
@@ -302,8 +302,10 @@ static int mt7921_pci_probe(struct pci_dev *pdev,
        dev->bus_ops = dev->mt76.bus;
        bus_ops = devm_kmemdup(dev->mt76.dev, dev->bus_ops, sizeof(*bus_ops),
                               GFP_KERNEL);
-       if (!bus_ops)
-               return -ENOMEM;
+       if (!bus_ops) {
+               ret = -ENOMEM;
+               goto err_free_dev;
+       }
 
        bus_ops->rr = mt7921_rr;
        bus_ops->wr = mt7921_wr;
@@ -312,7 +314,7 @@ static int mt7921_pci_probe(struct pci_dev *pdev,
 
        ret = __mt7921e_mcu_drv_pmctrl(dev);
        if (ret)
-               return ret;
+               goto err_free_dev;
 
        mdev->rev = (mt7921_l1_rr(dev, MT_HW_CHIPID) << 16) |
                    (mt7921_l1_rr(dev, MT_HW_REV) & 0xff);