]> git.dujemihanovic.xyz Git - linux.git/commitdiff
mt76: mt7915: Fix PCI device refcount leak in mt7915_pci_init_hif2()
authorXiongfeng Wang <wangxiongfeng2@huawei.com>
Fri, 25 Nov 2022 02:58:31 +0000 (10:58 +0800)
committerFelix Fietkau <nbd@nbd.name>
Thu, 1 Dec 2022 16:29:15 +0000 (17:29 +0100)
As comment of pci_get_device() says, it returns a pci_device with its
refcount increased. We need to call pci_dev_put() to decrease the
refcount. Save the return value of pci_get_device() and call
pci_dev_put() to decrease the refcount.

Fixes: 9093cfff72e3 ("mt76: mt7915: add support for using a secondary PCIe link for gen1")
Fixes: 2e30db0dde61 ("mt76: mt7915: add device id for mt7916")
Signed-off-by: Xiongfeng Wang <wangxiongfeng2@huawei.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7915/pci.c

index 743f01f6eae98f38184ece551a153e6e2ea15d32..39132894e8ea295b4e283d04a056ab420c1517d1 100644 (file)
@@ -62,10 +62,17 @@ static void mt7915_put_hif2(struct mt7915_hif *hif)
 
 static struct mt7915_hif *mt7915_pci_init_hif2(struct pci_dev *pdev)
 {
+       struct pci_dev *tmp_pdev;
+
        hif_idx++;
-       if (!pci_get_device(PCI_VENDOR_ID_MEDIATEK, 0x7916, NULL) &&
-           !pci_get_device(PCI_VENDOR_ID_MEDIATEK, 0x790a, NULL))
-               return NULL;
+
+       tmp_pdev = pci_get_device(PCI_VENDOR_ID_MEDIATEK, 0x7916, NULL);
+       if (!tmp_pdev) {
+               tmp_pdev = pci_get_device(PCI_VENDOR_ID_MEDIATEK, 0x790a, NULL);
+               if (!tmp_pdev)
+                       return NULL;
+       }
+       pci_dev_put(tmp_pdev);
 
        writel(hif_idx | MT_PCIE_RECOG_ID_SEM,
               pcim_iomap_table(pdev)[0] + MT_PCIE_RECOG_ID);