Skip to content

Commit

Permalink
Bluetooth: Fix conn_params list update in hci_connect_le_scan_cleanup
Browse files Browse the repository at this point in the history
After clearing the params->explicit_connect variable the parameters
may need to be either added back to the right list or potentially left
absent from both the le_reports and the le_conns lists.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
  • Loading branch information
Johan Hedberg authored and Marcel Holtmann committed Oct 16, 2015
1 parent 679d2b6 commit 9ad3e6f
Showing 1 changed file with 19 additions and 4 deletions.
23 changes: 19 additions & 4 deletions net/bluetooth/hci_conn.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,12 +91,27 @@ static void hci_connect_le_scan_cleanup(struct hci_conn *conn)
* autoconnect action, remove them completely. If they are, just unmark
* them as waiting for connection, by clearing explicit_connect field.
*/
if (params->auto_connect == HCI_AUTO_CONN_EXPLICIT) {
params->explicit_connect = false;

list_del_init(&params->action);

switch (params->auto_connect) {
case HCI_AUTO_CONN_EXPLICIT:
hci_conn_params_del(conn->hdev, bdaddr, bdaddr_type);
} else {
params->explicit_connect = false;
hci_update_background_scan(conn->hdev);
/* return instead of break to avoid duplicate scan update */
return;
case HCI_AUTO_CONN_DIRECT:
case HCI_AUTO_CONN_ALWAYS:
list_add(&params->action, &conn->hdev->pend_le_conns);
break;
case HCI_AUTO_CONN_REPORT:
list_add(&params->action, &conn->hdev->pend_le_reports);
break;
default:
break;
}

hci_update_background_scan(conn->hdev);
}

static void hci_conn_cleanup(struct hci_conn *conn)
Expand Down

0 comments on commit 9ad3e6f

Please sign in to comment.