On Thu, Feb 21, 2019 at 04:30:51PM -0800, Brian Norris wrote: > Badly-designed systems might have (for example) active-high wake pins > that default to high (e.g., because of external pull ups) until they > have an active firmware which starts driving it low. This can cause an > interrupt storm in the time between request_irq() and disable_irq(). > > We don't support shared interrupts here, so let's just pre-configure the > interrupt to avoid auto-enabling it. > > Fixes: fd913ef7ce61 ("Bluetooth: btusb: Add out-of-band wakeup support") > Signed-off-by: Brian Norris <briannorris@xxxxxxxxxxxx> > --- > drivers/bluetooth/btusb.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c > index 4761499db9ee..470ee68555d9 100644 > --- a/drivers/bluetooth/btusb.c > +++ b/drivers/bluetooth/btusb.c > @@ -2885,6 +2885,7 @@ static int btusb_config_oob_wake(struct hci_dev *hdev) > return 0; > } > > + irq_set_status_flags(irq, IRQ_NOAUTOEN); > ret = devm_request_irq(&hdev->dev, irq, btusb_oob_wake_handler, > 0, "OOB Wake-on-BT", data); > if (ret) { > @@ -2899,7 +2900,6 @@ static int btusb_config_oob_wake(struct hci_dev *hdev) > } > > data->oob_wake_irq = irq; > - disable_irq(irq); > bt_dev_info(hdev, "OOB Wake-on-BT configured at IRQ %u", irq); > return 0; > } Reviewed-by: Matthias Kaehlcke <mka@xxxxxxxxxxxx>