aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/bluetooth
diff options
context:
space:
mode:
authorLukas Wunner <lukas@wunner.de>2018-01-10 16:32:10 +0100
committerMarcel Holtmann <marcel@holtmann.org>2018-01-10 19:00:13 +0100
commitf4cf6b7e3b8704d3dabfb8427a61d4c03ce48d80 (patch)
treeaf0a95a5ff1685af2caccf62d5ab27f895c56ede /drivers/bluetooth
parentBluetooth: hci_bcm: Fix race on close (diff)
downloadlinux-dev-f4cf6b7e3b8704d3dabfb8427a61d4c03ce48d80.tar.xz
linux-dev-f4cf6b7e3b8704d3dabfb8427a61d4c03ce48d80.zip
Bluetooth: hci_bcm: Fix unbalanced pm_runtime_disable()
On ->setup, pm_runtime_enable() is only called if a valid IRQ was found, but on ->close(), pm_runtime_disable() is called unconditionally. Disablement of runtime PM is recorded in a counter, so every pm_runtime_disable() needs to be balanced. Fix it. Cc: Frédéric Danis <frederic.danis.oss@gmail.com> Reported-and-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>
Diffstat (limited to 'drivers/bluetooth')
-rw-r--r--drivers/bluetooth/hci_bcm.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c
index 6144a3f9c37a..140c7e5bf812 100644
--- a/drivers/bluetooth/hci_bcm.c
+++ b/drivers/bluetooth/hci_bcm.c
@@ -375,10 +375,10 @@ static int bcm_close(struct hci_uart *hu)
if (IS_ENABLED(CONFIG_PM) && bdev->irq > 0) {
devm_free_irq(bdev->dev, bdev->irq, bdev);
device_init_wakeup(bdev->dev, false);
+ pm_runtime_disable(bdev->dev);
}
bcm_gpio_set_power(bdev, false);
- pm_runtime_disable(bdev->dev);
pm_runtime_set_suspended(bdev->dev);
}
mutex_unlock(&bcm_device_lock);