Bluetooth: hci_ll: Fix download_firmware() return when __hci_cmd_sync fails
authorGuodong Xu <guodong.xu@linaro.org>
Mon, 22 May 2017 13:50:42 +0000 (21:50 +0800)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 23 May 2017 14:16:31 +0000 (16:16 +0200)
When __hci_cmd_sync() fails, download_firmware() should also fail, and
the same error value should be returned as PTR_ERR(skb).

Without this fix, download_firmware() will return a success when it actually
failed in __hci_cmd_sync().

Fixes: 371805522f87 ("bluetooth: hci_uart: add LL protocol serdev driver support")
Signed-off-by: Guodong Xu <guodong.xu@linaro.org>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
drivers/bluetooth/hci_ll.c

index adc444f309a3cf847148c99950d8d769fd9f4419..200288c87fc431ae623c116f14115e1d607733f4 100644 (file)
@@ -624,6 +624,7 @@ static int download_firmware(struct ll_device *lldev)
                        skb = __hci_cmd_sync(lldev->hu.hdev, cmd->opcode, cmd->plen, &cmd->speed, HCI_INIT_TIMEOUT);
                        if (IS_ERR(skb)) {
                                bt_dev_err(lldev->hu.hdev, "send command failed\n");
+                               err = PTR_ERR(skb);
                                goto out_rel_fw;
                        }
                        kfree_skb(skb);