diff options
author | David Lechner <david@lechnology.com> | 2017-12-07 21:22:19 -0500 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2017-12-12 18:28:41 -0500 |
commit | c30b93eade2ad1d77695669f25ddeb3833588d3b (patch) | |
tree | d452b17e4d44bd526e33dfe84a47abc436fe89a2 | |
parent | 7c6ca1201e5e87513b27196138f06df9cbd09a7a (diff) |
Bluetooth: hci_ll: Add endianness conversion when setting baudrate
This adds an endianness conversion when setting the baudrate using a
vendor-specific command. Otherwise, bad things might happen on a big-
endian system.
Suggested-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: David Lechner <david@lechnology.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
-rw-r--r-- | drivers/bluetooth/hci_ll.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/bluetooth/hci_ll.c b/drivers/bluetooth/hci_ll.c index 974a78879d20..efcfbe9aac21 100644 --- a/drivers/bluetooth/hci_ll.c +++ b/drivers/bluetooth/hci_ll.c | |||
@@ -707,10 +707,12 @@ static int ll_setup(struct hci_uart *hu) | |||
707 | speed = 0; | 707 | speed = 0; |
708 | 708 | ||
709 | if (speed) { | 709 | if (speed) { |
710 | __le32 speed_le = cpu_to_le32(speed); | ||
710 | struct sk_buff *skb; | 711 | struct sk_buff *skb; |
711 | 712 | ||
712 | skb = __hci_cmd_sync(hu->hdev, HCI_VS_UPDATE_UART_HCI_BAUDRATE, | 713 | skb = __hci_cmd_sync(hu->hdev, HCI_VS_UPDATE_UART_HCI_BAUDRATE, |
713 | sizeof(speed), &speed, HCI_INIT_TIMEOUT); | 714 | sizeof(speed_le), &speed_le, |
715 | HCI_INIT_TIMEOUT); | ||
714 | if (!IS_ERR(skb)) { | 716 | if (!IS_ERR(skb)) { |
715 | kfree_skb(skb); | 717 | kfree_skb(skb); |
716 | serdev_device_set_baudrate(serdev, speed); | 718 | serdev_device_set_baudrate(serdev, speed); |