On January 25, 2024 1:08:26 PM Dmitry Antipov <dmantipov@xxxxxxxxx> wrote:
Switch to newer 'pci_{alloc,free}_irq_vectors()' API and handle possible errors in 'brcmf_pcie_request_irq()'. Compile tested only. Found by Linux Verification Center (linuxtesting.org) with SVACE.
Crap. Did notice something else...
Suggested-by: Bjorn Helgaas <helgaas@xxxxxxxxxx> Signed-off-by: Dmitry Antipov <dmantipov@xxxxxxxxx> --- v4: prefer devm_{devm_request_threaded_irq,free_irq}()', use 'pci_irq_vector()' and fix title (Arend, Bjorn) v3: switch to 'pci_{alloc,free}_irq_vectors()' per Bjorn's review v2: rebase against wireless-next tree --- .../broadcom/brcm80211/brcmfmac/pcie.c | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-)diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.cindex 80220685f5e4..17b855164025 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
[...]
@@ -972,11 +973,16 @@ static int brcmf_pcie_request_irq(struct brcmf_pciedev_info *devinfo)brcmf_dbg(PCIE, "Enter\n"); - pci_enable_msi(pdev); - if (request_threaded_irq(pdev->irq, brcmf_pcie_quick_check_isr, - brcmf_pcie_isr_thread, IRQF_SHARED, - "brcmf_pcie_intr", devinfo)) { - pci_disable_msi(pdev); + ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_ALL_TYPES); + if (ret < 0) + return ret; + + if (devm_request_threaded_irq(&pdev->dev, + pci_irq_vector(pdev, 0), + brcmf_pcie_quick_check_isr, + brcmf_pcie_isr_thread, IRQF_SHARED, + "brcmf_pcie_intr", devinfo)) { + pci_free_irq_vectors(pdev); brcmf_err(bus, "Failed to request IRQ %d\n", pdev->irq);
Maybe better to use pci_irq_vector() here as well.
return -EIO; }
Attachment:
smime.p7s
Description: S/MIME Cryptographic Signature