Skip to content

Commit

Permalink
Bluetooth: Fix endianness handling of cmd_status/complete opcodes
Browse files Browse the repository at this point in the history
The opcode in cmd_complete and cmd_status events is 16 bits, so we
should only be comparing it after having converted it to the host
endianness. There's already an opcode variable in both functions which
is in host endiannes so the right fix is to just start using it instead
of ev->opcode.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
  • Loading branch information
Johan Hedberg authored and Gustavo Padovan committed Mar 9, 2013
1 parent 34739c1 commit ad82cdd
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions net/bluetooth/hci_event.c
Original file line number Diff line number Diff line change
Expand Up @@ -2299,10 +2299,10 @@ static void hci_cmd_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
break;
}

if (ev->opcode != HCI_OP_NOP)
if (opcode != HCI_OP_NOP)
del_timer(&hdev->cmd_timer);

hci_req_cmd_complete(hdev, ev->opcode, status);
hci_req_cmd_complete(hdev, opcode, status);

if (ev->ncmd && !test_bit(HCI_RESET, &hdev->flags)) {
atomic_set(&hdev->cmd_cnt, 1);
Expand Down Expand Up @@ -2386,10 +2386,10 @@ static void hci_cmd_status_evt(struct hci_dev *hdev, struct sk_buff *skb)
break;
}

if (ev->opcode != HCI_OP_NOP)
if (opcode != HCI_OP_NOP)
del_timer(&hdev->cmd_timer);

hci_req_cmd_status(hdev, ev->opcode, ev->status);
hci_req_cmd_status(hdev, opcode, ev->status);

if (ev->ncmd && !test_bit(HCI_RESET, &hdev->flags)) {
atomic_set(&hdev->cmd_cnt, 1);
Expand Down

0 comments on commit ad82cdd

Please sign in to comment.