Commit 5938196c authored by Xiongfeng Wang's avatar Xiongfeng Wang Committed by Felix Fietkau
Browse files

mt76: mt7915: Fix PCI device refcount leak in mt7915_pci_init_hif2()



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: 9093cfff ("mt76: mt7915: add support for using a secondary PCIe link for gen1")
Fixes: 2e30db0d ("mt76: mt7915: add device id for mt7916")
Signed-off-by: default avatarXiongfeng Wang <wangxiongfeng2@huawei.com>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent f37f76d4
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -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))

	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);