aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Wunner <[email protected]>2018-01-10 16:32:10 +0100
committerMarcel Holtmann <[email protected]>2018-01-10 19:00:13 +0100
commit4dc273306c16b04f696e8ab0e8bb4f6e238fe61b (patch)
tree388fcae80cf980512061b162e37004520a6d114a
parentf4cf6b7e3b8704d3dabfb8427a61d4c03ce48d80 (diff)
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 <[email protected]> Reviewed-by: Andy Shevchenko <[email protected]> Signed-off-by: Lukas Wunner <[email protected]> Signed-off-by: Marcel Holtmann <[email protected]>
-rw-r--r--drivers/bluetooth/hci_bcm.c4
1 files changed, 3 insertions, 1 deletions
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);