Bluetooth: btbcm: Fix handling of firmware not found
authorPetri Gynther <pgynther@google.com>
Wed, 10 Feb 2016 20:00:46 +0000 (12:00 -0800)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 23 Feb 2016 19:29:37 +0000 (20:29 +0100)
If the call to request_firmware() fails in btbcm_setup_patchram(),
the BCM chip will be operating with its default firmware.

In this case, btbcm_setup_patchram() should not return immediately
but instead should skip to btbcm_check_bdaddr() and quirk setup.

Signed-off-by: Petri Gynther <pgynther@google.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
drivers/bluetooth/btbcm.c

index 0b69794..fdb4482 100644 (file)
@@ -467,7 +467,7 @@ int btbcm_setup_patchram(struct hci_dev *hdev)
        err = request_firmware(&fw, fw_name, &hdev->dev);
        if (err < 0) {
                BT_INFO("%s: BCM: Patch %s not found", hdev->name, fw_name);
-               return 0;
+               goto done;
        }
 
        btbcm_patchram(hdev, fw);
@@ -501,6 +501,7 @@ int btbcm_setup_patchram(struct hci_dev *hdev)
        BT_INFO("%s: %s", hdev->name, (char *)(skb->data + 1));
        kfree_skb(skb);
 
+done:
        btbcm_check_bdaddr(hdev);
 
        set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks);