From: Lukas Wunner Date: Wed, 10 Jan 2018 15:32:10 +0000 (+0100) Subject: Bluetooth: hci_bcm: Invalidate IRQ on request failure X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=4dc273306c16b04f696e8ab0e8bb4f6e238fe61b;p=openwrt%2Fstaging%2Fblogic.git Bluetooth: hci_bcm: Invalidate IRQ on request failure If devm_request_irq() fails, the driver bails out of bcm_request_irq() but continues to ->setup the device (because the IRQ is optional). The driver subsequently calls devm_free_irq(), enable_irq_wake() and disable_irq_wake() on the IRQ even though requesting it failed. Avoid by invalidating the IRQ on request failure. Cc: Frédéric Danis Reviewed-by: Andy Shevchenko Signed-off-by: Lukas Wunner Signed-off-by: Marcel Holtmann --- diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c index 140c7e5bf812..c893c597fead 100644 --- a/drivers/bluetooth/hci_bcm.c +++ b/drivers/bluetooth/hci_bcm.c @@ -216,8 +216,10 @@ static int bcm_request_irq(struct bcm_data *bcm) bdev->irq_active_low ? IRQF_TRIGGER_FALLING : IRQF_TRIGGER_RISING, "host_wake", bdev); - if (err) + if (err) { + bdev->irq = err; goto unlock; + } device_init_wakeup(bdev->dev, true);