Bluetooth: hci_bcm: For serdev case close serdev on failure to set power
authorHans de Goede <hdegoede@redhat.com>
Mon, 22 Jan 2018 11:53:24 +0000 (12:53 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Mon, 22 Jan 2018 12:01:42 +0000 (13:01 +0100)
Commit 8bfa7e1e03ac ("Bluetooth: hci_bcm: Handle errors properly")
introduced error checking for the bcm_gpio_set_power() call in bcm_open()
but the error-path it introduces unsets dev->hu, which is correct for
platform_device instantiated bcm_dev-s but not for serdev instantiated
devs. For serdev instantiated devs serdev_device_close() should be called
instead (and dev->hu should be left set).

Cc: Lukas Wunner <lukas@wunner.de>
Fixes: 8bfa7e1e03ac ("Bluetooth: hci_bcm: Handle errors properly")
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
drivers/bluetooth/hci_bcm.c

index 64800cd2796c607f1f049d643d7df2b1712c70cd..0438a64b8185ed85b60c28f5086141c7e7a7b769 100644 (file)
@@ -412,8 +412,11 @@ out:
        return 0;
 
 err_unset_hu:
+       if (hu->serdev)
+               serdev_device_close(hu->serdev);
 #ifdef CONFIG_PM
-       bcm->dev->hu = NULL;
+       else
+               bcm->dev->hu = NULL;
 #endif
 err_free:
        mutex_unlock(&bcm_device_lock);