Skip to contentSkip to conversation

Bluetooth: Fix unnecessary error message for HCI request completion

PATCH In review Johan Hedberg 3 participants 3 messages Nov 27, 2018 – Dec 19, 2018

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Bluetooth: Fix unnecessary error message for HCI request completion

From: Johan Hedberg <[email protected]>

In case a command which completes in Command Status was sent using the hci_cmd_send-family of APIs there would be a misleading error in the hci_get_cmd_complete function, since the code would be trying to fetch the Command Complete parameters when there are none.

Avoid the misleading error and silently bail out from the function in case the received event is a command status.

---
 net/bluetooth/hci_event.c | 6 ++++++
 1 file changed, 6 insertions(+)
net/bluetooth/hci_event.c +6 -0
index ef9928d7b4fb..ac2826ce162b 100644
@@ -5711,6 +5711,12 @@ static bool hci_get_cmd_complete(struct hci_dev *hdev, u16 opcode,
 		return true;
 	}
 
+	/* Check if request ended in Command Status - no way to retreive
+	 * any extra parameters in this case.
+	 */
+	if (hdr->evt == HCI_EV_CMD_STATUS)
+		return false;
+
 	if (hdr->evt != HCI_EV_CMD_COMPLETE) {
 		bt_dev_err(hdev, "last event is not cmd complete (0x%2.2x)",
 			   hdr->evt);
Signature · 1 line
2.17.2
#1 lore raw

Hi Johan,

Quoted 34 lines · Johan Hedberg

From: Johan Hedberg <[email protected]>

In case a command which completes in Command Status was sent using the hci_cmd_send-family of APIs there would be a misleading error in the hci_get_cmd_complete function, since the code would be trying to fetch the Command Complete parameters when there are none.

Avoid the misleading error and silently bail out from the function in case the received event is a command status.

---
 net/bluetooth/hci_event.c | 6 ++++++
 1 file changed, 6 insertions(+)
net/bluetooth/hci_event.c +6 -1
index ef9928d7b4fb..ac2826ce162b 100644
@@ -5711,6 +5711,12 @@ static bool hci_get_cmd_complete(struct hci_dev *hdev, u16 opcode,
                return true;
        }
 
+       /* Check if request ended in Command Status - no way to retreive
+        * any extra parameters in this case.
+        */
+       if (hdr->evt == HCI_EV_CMD_STATUS)
+               return false;
+
        if (hdr->evt != HCI_EV_CMD_COMPLETE) {
                bt_dev_err(hdev, "last event is not cmd complete (0x%2.2x)",
                           hdr->evt);
--
Quoted 1 line

2.17.2

Ack.

Signature · 1 line
Luiz Augusto von Dentz
maintainer
#2 lore raw
In reply to Johan Hedberg

Hi Johan,

Quoted 5 lines

In case a command which completes in Command Status was sent using the hci_cmd_send-family of APIs there would be a misleading error in the hci_get_cmd_complete function, since the code would be trying to fetch the Command Complete parameters when there are none.

Quoted 7 lines

Avoid the misleading error and silently bail out from the function in case the received event is a command status.

---
net/bluetooth/hci_event.c | 6 ++++++

1 file changed, 6 insertions(+)

patch has been applied to bluetooth-next tree.

Regards

Marcel