mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 13:26:48 +00:00
wifi: mt76: mt7915: release hif2 reference on probe IRQ failure
The hif2 reference obtained by mt7915_pci_init_hif2() is only released on
error paths that key off dev->hif2, which is not assigned until after the
IRQ setup. If pci_alloc_irq_vectors() or the primary devm_request_irq()
fails, the reference leaks. Drop it explicitly on those paths via
mt7915_put_hif2().
Fixes: f68d67623dec ("mt76: mt7915: add Wireless Ethernet Dispatch support")
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
+6
-2
@@ -145,16 +145,20 @@ static int mt7915_pci_probe(struct pci_dev *pdev,
|
|||||||
hif2 = mt7915_pci_init_hif2(pdev);
|
hif2 = mt7915_pci_init_hif2(pdev);
|
||||||
|
|
||||||
ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_ALL_TYPES);
|
ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_ALL_TYPES);
|
||||||
if (ret < 0)
|
if (ret < 0) {
|
||||||
|
mt7915_put_hif2(hif2);
|
||||||
goto free_device;
|
goto free_device;
|
||||||
|
}
|
||||||
|
|
||||||
irq = pdev->irq;
|
irq = pdev->irq;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = devm_request_irq(mdev->dev, irq, mt7915_irq_handler,
|
ret = devm_request_irq(mdev->dev, irq, mt7915_irq_handler,
|
||||||
IRQF_SHARED, KBUILD_MODNAME, dev);
|
IRQF_SHARED, KBUILD_MODNAME, dev);
|
||||||
if (ret)
|
if (ret) {
|
||||||
|
mt7915_put_hif2(hif2);
|
||||||
goto free_wed_or_irq_vector;
|
goto free_wed_or_irq_vector;
|
||||||
|
}
|
||||||
|
|
||||||
/* master switch of PCIe tnterrupt enable */
|
/* master switch of PCIe tnterrupt enable */
|
||||||
mt76_wr(dev, MT_PCIE_MAC_INT_ENABLE, 0xff);
|
mt76_wr(dev, MT_PCIE_MAC_INT_ENABLE, 0xff);
|
||||||
|
|||||||
Reference in New Issue
Block a user