Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9ad3e6ff authored by Johan Hedberg's avatar Johan Hedberg Committed by Marcel Holtmann
Browse files

Bluetooth: Fix conn_params list update in hci_connect_le_scan_cleanup



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: default avatarJohan Hedberg <johan.hedberg@intel.com>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 679d2b6f
Loading
Loading
Loading
Loading
+19 −4
Original line number Diff line number Diff line
@@ -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) {
		hci_conn_params_del(conn->hdev, bdaddr, bdaddr_type);
	} else {
	params->explicit_connect = false;
		hci_update_background_scan(conn->hdev);

	list_del_init(&params->action);

	switch (params->auto_connect) {
	case HCI_AUTO_CONN_EXPLICIT:
		hci_conn_params_del(conn->hdev, bdaddr, bdaddr_type);
		/* 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)