Bluetooth: btusb: Fix new sparce warnings

This fix the following warnings detect with make W=1 C=1:

drivers/bluetooth/btusb.c:2212:9: warning: cast to restricted __le16
drivers/bluetooth/btusb.c:2212:9: warning: cast to restricted __le16
drivers/bluetooth/btusb.c:2245:18: warning: cast to restricted __le16
drivers/bluetooth/btusb.c:2249:18: warning: cast to restricted __le16
drivers/bluetooth/btusb.c:2253:18: warning: cast to restricted __le16
drivers/bluetooth/btusb.c:2257:18: warning: cast to restricted __le16
drivers/bluetooth/btusb.c:2261:18: warning: cast to restricted __le16
drivers/bluetooth/btusb.c:2267:18: warning: cast to restricted __le16
Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
parent 6d0a4fe2
...@@ -2201,17 +2201,18 @@ static int btusb_setup_csr(struct hci_dev *hdev) ...@@ -2201,17 +2201,18 @@ static int btusb_setup_csr(struct hci_dev *hdev)
return err; return err;
} }
if (skb->len != sizeof(struct hci_rp_read_local_version)) { rp = skb_pull_data(skb, sizeof(*rp));
if (!rp) {
bt_dev_err(hdev, "CSR: Local version length mismatch"); bt_dev_err(hdev, "CSR: Local version length mismatch");
kfree_skb(skb); kfree_skb(skb);
return -EIO; return -EIO;
} }
rp = (struct hci_rp_read_local_version *)skb->data; bt_dev_info(hdev, "CSR: Setting up dongle with HCI ver=%u rev=%04x",
rp->hci_ver, le16_to_cpu(rp->hci_rev));
bt_dev_info(hdev, "CSR: Setting up dongle with HCI ver=%u rev=%04x; LMP ver=%u subver=%04x; manufacturer=%u", bt_dev_info(hdev, "LMP ver=%u subver=%04x; manufacturer=%u",
le16_to_cpu(rp->hci_ver), le16_to_cpu(rp->hci_rev), rp->lmp_ver, le16_to_cpu(rp->lmp_subver),
le16_to_cpu(rp->lmp_ver), le16_to_cpu(rp->lmp_subver),
le16_to_cpu(rp->manufacturer)); le16_to_cpu(rp->manufacturer));
/* Detect a wide host of Chinese controllers that aren't CSR. /* Detect a wide host of Chinese controllers that aren't CSR.
...@@ -2242,29 +2243,29 @@ static int btusb_setup_csr(struct hci_dev *hdev) ...@@ -2242,29 +2243,29 @@ static int btusb_setup_csr(struct hci_dev *hdev)
* third-party BT 4.0 dongle reuses it. * third-party BT 4.0 dongle reuses it.
*/ */
else if (le16_to_cpu(rp->lmp_subver) <= 0x034e && else if (le16_to_cpu(rp->lmp_subver) <= 0x034e &&
le16_to_cpu(rp->hci_ver) > BLUETOOTH_VER_1_1) rp->hci_ver > BLUETOOTH_VER_1_1)
is_fake = true; is_fake = true;
else if (le16_to_cpu(rp->lmp_subver) <= 0x0529 && else if (le16_to_cpu(rp->lmp_subver) <= 0x0529 &&
le16_to_cpu(rp->hci_ver) > BLUETOOTH_VER_1_2) rp->hci_ver > BLUETOOTH_VER_1_2)
is_fake = true; is_fake = true;
else if (le16_to_cpu(rp->lmp_subver) <= 0x0c5c && else if (le16_to_cpu(rp->lmp_subver) <= 0x0c5c &&
le16_to_cpu(rp->hci_ver) > BLUETOOTH_VER_2_0) rp->hci_ver > BLUETOOTH_VER_2_0)
is_fake = true; is_fake = true;
else if (le16_to_cpu(rp->lmp_subver) <= 0x1899 && else if (le16_to_cpu(rp->lmp_subver) <= 0x1899 &&
le16_to_cpu(rp->hci_ver) > BLUETOOTH_VER_2_1) rp->hci_ver > BLUETOOTH_VER_2_1)
is_fake = true; is_fake = true;
else if (le16_to_cpu(rp->lmp_subver) <= 0x22bb && else if (le16_to_cpu(rp->lmp_subver) <= 0x22bb &&
le16_to_cpu(rp->hci_ver) > BLUETOOTH_VER_4_0) rp->hci_ver > BLUETOOTH_VER_4_0)
is_fake = true; is_fake = true;
/* Other clones which beat all the above checks */ /* Other clones which beat all the above checks */
else if (bcdDevice == 0x0134 && else if (bcdDevice == 0x0134 &&
le16_to_cpu(rp->lmp_subver) == 0x0c5c && le16_to_cpu(rp->lmp_subver) == 0x0c5c &&
le16_to_cpu(rp->hci_ver) == BLUETOOTH_VER_2_0) rp->hci_ver == BLUETOOTH_VER_2_0)
is_fake = true; is_fake = true;
if (is_fake) { if (is_fake) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment