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 <frederic.danis.oss@gmail.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Lukas Wunner <lukas@wunner.de> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
f4cf6b7e3b
commit
4dc273306c
|
@ -216,8 +216,10 @@ static int bcm_request_irq(struct bcm_data *bcm)
|
||||||
bdev->irq_active_low ? IRQF_TRIGGER_FALLING :
|
bdev->irq_active_low ? IRQF_TRIGGER_FALLING :
|
||||||
IRQF_TRIGGER_RISING,
|
IRQF_TRIGGER_RISING,
|
||||||
"host_wake", bdev);
|
"host_wake", bdev);
|
||||||
if (err)
|
if (err) {
|
||||||
|
bdev->irq = err;
|
||||||
goto unlock;
|
goto unlock;
|
||||||
|
}
|
||||||
|
|
||||||
device_init_wakeup(bdev->dev, true);
|
device_init_wakeup(bdev->dev, true);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue