| From 86206b1d4d83416d395b9bea45ff656ee88a855d Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 23 Oct 2023 16:26:23 -0700 |
| Subject: Bluetooth: Fix not notifying when connection encryption changes |
| |
| From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> |
| |
| [ Upstream commit f67eabffb57d0bee379994a18ec5f462b2cbdf86 ] |
| |
| Some layers such as SMP depend on getting notified about encryption |
| changes immediately as they only allow certain PDU to be transmitted |
| over an encrypted link which may cause SMP implementation to reject |
| valid PDUs received thus causing pairing to fail when it shouldn't. |
| |
| Fixes: 7aca0ac4792e ("Bluetooth: Wait for HCI_OP_WRITE_AUTH_PAYLOAD_TO to complete") |
| Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| net/bluetooth/hci_event.c | 8 +------- |
| 1 file changed, 1 insertion(+), 7 deletions(-) |
| |
| diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c |
| index f6d3150bcbb03..da756cbf62206 100644 |
| --- a/net/bluetooth/hci_event.c |
| +++ b/net/bluetooth/hci_event.c |
| @@ -820,8 +820,6 @@ static u8 hci_cc_write_auth_payload_timeout(struct hci_dev *hdev, void *data, |
| if (!rp->status) |
| conn->auth_payload_timeout = get_unaligned_le16(sent + 2); |
| |
| - hci_encrypt_cfm(conn, 0); |
| - |
| unlock: |
| hci_dev_unlock(hdev); |
| |
| @@ -3683,12 +3681,8 @@ static void hci_encrypt_change_evt(struct hci_dev *hdev, void *data, |
| cp.handle = cpu_to_le16(conn->handle); |
| cp.timeout = cpu_to_le16(hdev->auth_payload_timeout); |
| if (hci_send_cmd(conn->hdev, HCI_OP_WRITE_AUTH_PAYLOAD_TO, |
| - sizeof(cp), &cp)) { |
| + sizeof(cp), &cp)) |
| bt_dev_err(hdev, "write auth payload timeout failed"); |
| - goto notify; |
| - } |
| - |
| - goto unlock; |
| } |
| |
| notify: |
| -- |
| 2.43.0 |
| |