[lvc-project] [PATCH 2/2] [v3] wifi: brcmfmac: handle possible PCIE irq handling errors

Arend Van Spriel arend.vanspriel at broadcom.com
Mon Jan 22 20:45:54 MSK 2024


On January 22, 2024 12:59:03 PM Dmitry Antipov <dmantipov at yandex.ru> wrote:

> Switch to newer 'pci_{alloc,feee}_irq_vectors()' API and handle
> possible errors in 'brcmf_pcie_request_irq()'. Compile tested only.
>
> Found by Linux Verification Center (linuxtesting.org) with SVACE.

See comment below...

Reviewed-by: Arend van Spriel<arend.vanspriel at broadcom.com>
> Suggested-by: Bjorn Helgaas <helgaas at kernel.org>
> Signed-off-by: Dmitry Antipov <dmantipov at yandex.ru>
> ---
> v3: switch to 'pci_{alloc,feee}_irq_vectors()' per Bjorn's review
> v2: rebase against wireless-next tree
> ---
> .../net/wireless/broadcom/brcm80211/brcmfmac/pcie.c    | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c 
> b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
> index 80220685f5e4..0f77d94f34a3 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
> @@ -965,6 +965,7 @@ static irqreturn_t brcmf_pcie_isr_thread(int irq, void 
> *arg)
>
> static int brcmf_pcie_request_irq(struct brcmf_pciedev_info *devinfo)
> {
> + int ret;
>  struct pci_dev *pdev = devinfo->pdev;
>  struct brcmf_bus *bus = dev_get_drvdata(&pdev->dev);
>
> @@ -972,11 +973,14 @@ static int brcmf_pcie_request_irq(struct 
> brcmf_pciedev_info *devinfo)
>
>  brcmf_dbg(PCIE, "Enter\n");
>
> - pci_enable_msi(pdev);
> + ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_ALL_TYPES);
> + if (ret < 0)
> + return ret;
> +
>  if (request_threaded_irq(pdev->irq,

Reading the kerneldoc for pci_alloc_irq_vectors() you should use the helper 
function pci_irq_vector() instead of pdev->irq


brcmf_pcie_quick_check_isr,
>  brcmf_pcie_isr_thread, IRQF_SHARED,
>  "brcmf_pcie_intr", devinfo)) {
> - pci_disable_msi(pdev);
> + pci_free_irq_vectors(pdev);
>  brcmf_err(bus, "Failed to request IRQ %d\n", pdev->irq);
>  return -EIO;
>  }
> @@ -997,7 +1001,7 @@ static void brcmf_pcie_release_irq(struct 
> brcmf_pciedev_info *devinfo)
>
>  brcmf_pcie_intr_disable(devinfo);
>  free_irq(pdev->irq, devinfo);
> - pci_disable_msi(pdev);
> + pci_free_irq_vectors(pdev);
>
>  msleep(50);
>  count = 0;
> --
> 2.43.0



-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4219 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://linuxtesting.org/pipermail/lvc-project/attachments/20240122/eb85f05d/attachment.bin>


More information about the lvc-project mailing list