Skip to content

Commit 3f426c9

Browse files
osctobeKalle Valo
authored andcommitted
brcmfmac: initialize oob irq data before request_irq()
This fixes spin-forever in irq handler when IRQ is already asserted at request_irq() time. Signed-off-by: Michał Mirosław <[email protected]> Signed-off-by: Kalle Valo <[email protected]>
1 parent 42213f2 commit 3f426c9

File tree

1 file changed

+3
-5
lines changed
  • drivers/net/wireless/broadcom/brcm80211/brcmfmac

1 file changed

+3
-5
lines changed

drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,14 @@ int brcmf_sdiod_intr_register(struct brcmf_sdio_dev *sdiodev)
108108
int ret = 0;
109109
u8 data;
110110
u32 addr, gpiocontrol;
111-
unsigned long flags;
112111

113112
pdata = &sdiodev->settings->bus.sdio;
114113
if (pdata->oob_irq_supported) {
115114
brcmf_dbg(SDIO, "Enter, register OOB IRQ %d\n",
116115
pdata->oob_irq_nr);
116+
spin_lock_init(&sdiodev->irq_en_lock);
117+
sdiodev->irq_en = true;
118+
117119
ret = request_irq(pdata->oob_irq_nr, brcmf_sdiod_oob_irqhandler,
118120
pdata->oob_irq_flags, "brcmf_oob_intr",
119121
&sdiodev->func[1]->dev);
@@ -122,10 +124,6 @@ int brcmf_sdiod_intr_register(struct brcmf_sdio_dev *sdiodev)
122124
return ret;
123125
}
124126
sdiodev->oob_irq_requested = true;
125-
spin_lock_init(&sdiodev->irq_en_lock);
126-
spin_lock_irqsave(&sdiodev->irq_en_lock, flags);
127-
sdiodev->irq_en = true;
128-
spin_unlock_irqrestore(&sdiodev->irq_en_lock, flags);
129127

130128
ret = enable_irq_wake(pdata->oob_irq_nr);
131129
if (ret != 0) {

0 commit comments

Comments
 (0)