OSDN Git Service

Bluetooth: fix off by one in err_data_reporting cmd masks.
authorAlain Michaud <alainm@chromium.org>
Wed, 11 Mar 2020 14:18:57 +0000 (14:18 +0000)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 11 Mar 2020 14:25:15 +0000 (15:25 +0100)
This change fixes the off by one error in the erroneous command bit
masks which can lead to the erroneous data commands being sent to a
controller that doesn't support them.

Signed-off-by: Alain Michaud <alainm@chromium.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/hci_core.c

index 9ce9876..196edc0 100644 (file)
@@ -603,7 +603,7 @@ static int hci_init3_req(struct hci_request *req, unsigned long opt)
        if (hdev->commands[8] & 0x01)
                hci_req_add(req, HCI_OP_READ_PAGE_SCAN_ACTIVITY, 0, NULL);
 
-       if (hdev->commands[18] & 0x02)
+       if (hdev->commands[18] & 0x04)
                hci_req_add(req, HCI_OP_READ_DEF_ERR_DATA_REPORTING, 0, NULL);
 
        /* Some older Broadcom based Bluetooth 1.2 controllers do not
@@ -844,7 +844,7 @@ static int hci_init4_req(struct hci_request *req, unsigned long opt)
        /* Set erroneous data reporting if supported to the wideband speech
         * setting value
         */
-       if (hdev->commands[18] & 0x04) {
+       if (hdev->commands[18] & 0x08) {
                bool enabled = hci_dev_test_flag(hdev,
                                                 HCI_WIDEBAND_SPEECH_ENABLED);