Search Linux Wireless

Re: [PATCH 2/2] [v3] wifi: brcmfmac: handle possible PCIE irq handling errors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On January 22, 2024 12:59:03 PM Dmitry Antipov <dmantipov@xxxxxxxxx> 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@xxxxxxxxxxxx>
Suggested-by: Bjorn Helgaas <helgaas@xxxxxxxxxx>
Signed-off-by: Dmitry Antipov <dmantipov@xxxxxxxxx>
---
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



Attachment: smime.p7s
Description: S/MIME Cryptographic Signature


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux