Messages in this thread Patch in this message | | | Date | Tue, 14 Apr 2020 11:58:21 -0700 | Subject | [PATCH] Bluetooth: Terminate the link if pairing is cancelled | From | Manish Mandlik <> |
| |
If user decides to cancel ongoing pairing process (e.g. by clicking the cancel button on the pairing/passkey window), abort any ongoing pairing and then terminate the link.
Signed-off-by: Manish Mandlik <mmandlik@google.com> --- Hello Linux-Bluetooth,
This patch aborts any ongoing pairing and then terminates the link by calling hci_abort_conn() in cancel_pair_device() function.
However, I'm not very sure if hci_abort_conn() should be called here in cancel_pair_device() or in smp for example to terminate the link after it had sent the pairing failed PDU.
Please share your thoughts on this.
Thanks and regards, Manish.
net/bluetooth/mgmt.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c index 6552003a170eb..1aaa44282af4f 100644 --- a/net/bluetooth/mgmt.c +++ b/net/bluetooth/mgmt.c @@ -3030,6 +3030,18 @@ static int cancel_pair_device(struct sock *sk, struct hci_dev *hdev, void *data, err = mgmt_cmd_complete(sk, hdev->id, MGMT_OP_CANCEL_PAIR_DEVICE, 0, addr, sizeof(*addr)); + + /* Since user doesn't want to proceed with the connection, + * abort any ongoing pairing and then terminate the link. + */ + if (addr->type == BDADDR_BREDR) + hci_remove_link_key(hdev, &addr->bdaddr); + else + smp_cancel_and_remove_pairing(hdev, &addr->bdaddr, + le_addr_type(addr->type)); + + hci_abort_conn(conn, HCI_ERROR_REMOTE_USER_TERM); + unlock: hci_dev_unlock(hdev); return err; -- 2.26.0.110.g2183baf09c-goog
| |