mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
Bluetooth: Fix remove_device behavior for explicit connects
Devices undergoing an explicit connect should not have their conn_params struct removed by the mgmt Remove Device command. This patch fixes the necessary checks in the command handler to correct the behavior. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
49c509220d
commit
679d2b6f9d
1 changed files with 6 additions and 1 deletions
|
@ -6386,7 +6386,8 @@ static int remove_device(struct sock *sk, struct hci_dev *hdev,
|
|||
goto unlock;
|
||||
}
|
||||
|
||||
if (params->auto_connect == HCI_AUTO_CONN_DISABLED) {
|
||||
if (params->auto_connect == HCI_AUTO_CONN_DISABLED ||
|
||||
params->auto_connect == HCI_AUTO_CONN_EXPLICIT) {
|
||||
err = cmd->cmd_complete(cmd,
|
||||
MGMT_STATUS_INVALID_PARAMS);
|
||||
mgmt_pending_remove(cmd);
|
||||
|
@ -6422,6 +6423,10 @@ static int remove_device(struct sock *sk, struct hci_dev *hdev,
|
|||
if (p->auto_connect == HCI_AUTO_CONN_DISABLED)
|
||||
continue;
|
||||
device_removed(sk, hdev, &p->addr, p->addr_type);
|
||||
if (p->explicit_connect) {
|
||||
p->auto_connect = HCI_AUTO_CONN_EXPLICIT;
|
||||
continue;
|
||||
}
|
||||
list_del(&p->action);
|
||||
list_del(&p->list);
|
||||
kfree(p);
|
||||
|
|
Loading…
Reference in a new issue