提交 1f350c87 编写于 作者: M Marcel Holtmann 提交者: Gustavo Padovan

Bluetooth: Fix broken usage of get_unaligned_le16

In case the struct is already __packed, there is no need to use unaligned
access to the data. So just use __le16_to_cpu in these cases.
Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
上级 1036b890
...@@ -862,7 +862,7 @@ static int set_discoverable(struct sock *sk, struct hci_dev *hdev, void *data, ...@@ -862,7 +862,7 @@ static int set_discoverable(struct sock *sk, struct hci_dev *hdev, void *data,
BT_DBG("request for %s", hdev->name); BT_DBG("request for %s", hdev->name);
timeout = get_unaligned_le16(&cp->timeout); timeout = __le16_to_cpu(cp->timeout);
if (!cp->val && timeout > 0) if (!cp->val && timeout > 0)
return cmd_status(sk, hdev->id, MGMT_OP_SET_DISCOVERABLE, return cmd_status(sk, hdev->id, MGMT_OP_SET_DISCOVERABLE,
MGMT_STATUS_INVALID_PARAMS); MGMT_STATUS_INVALID_PARAMS);
...@@ -1461,7 +1461,7 @@ static int load_link_keys(struct sock *sk, struct hci_dev *hdev, void *data, ...@@ -1461,7 +1461,7 @@ static int load_link_keys(struct sock *sk, struct hci_dev *hdev, void *data,
u16 key_count, expected_len; u16 key_count, expected_len;
int i; int i;
key_count = get_unaligned_le16(&cp->key_count); key_count = __le16_to_cpu(cp->key_count);
expected_len = sizeof(*cp) + key_count * expected_len = sizeof(*cp) + key_count *
sizeof(struct mgmt_link_key_info); sizeof(struct mgmt_link_key_info);
...@@ -2611,7 +2611,7 @@ static int load_long_term_keys(struct sock *sk, struct hci_dev *hdev, ...@@ -2611,7 +2611,7 @@ static int load_long_term_keys(struct sock *sk, struct hci_dev *hdev,
u16 key_count, expected_len; u16 key_count, expected_len;
int i; int i;
key_count = get_unaligned_le16(&cp->key_count); key_count = __le16_to_cpu(cp->key_count);
expected_len = sizeof(*cp) + key_count * expected_len = sizeof(*cp) + key_count *
sizeof(struct mgmt_ltk_info); sizeof(struct mgmt_ltk_info);
...@@ -2722,9 +2722,9 @@ int mgmt_control(struct sock *sk, struct msghdr *msg, size_t msglen) ...@@ -2722,9 +2722,9 @@ int mgmt_control(struct sock *sk, struct msghdr *msg, size_t msglen)
} }
hdr = buf; hdr = buf;
opcode = get_unaligned_le16(&hdr->opcode); opcode = __le16_to_cpu(hdr->opcode);
index = get_unaligned_le16(&hdr->index); index = __le16_to_cpu(hdr->index);
len = get_unaligned_le16(&hdr->len); len = __le16_to_cpu(hdr->len);
if (len != msglen - sizeof(*hdr)) { if (len != msglen - sizeof(*hdr)) {
err = -EINVAL; err = -EINVAL;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册