38 lines
1.3 KiB
Diff
38 lines
1.3 KiB
Diff
|
The encryption is only mandatory to be enforced when both sides are using
|
||
|
Secure Simple Pairing and this means the key size check makes only sense
|
||
|
in that case.
|
||
|
|
||
|
On legacy Bluetooth 2.0 and earlier devices like mice the encryption was
|
||
|
optional and thus causing an issue if the key size check is not bound to
|
||
|
using Secure Simple Pairing.
|
||
|
|
||
|
Fixes: d5bb334a8e17 ("Bluetooth: Align minimum encryption key size for LE and BR/EDR connections")
|
||
|
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
|
||
|
Cc: stable@vger.kernel.org
|
||
|
---
|
||
|
net/bluetooth/hci_conn.c | 9 +++++++--
|
||
|
1 file changed, 7 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
|
||
|
index 3cf0764d5793..7516cdde3373 100644
|
||
|
--- a/net/bluetooth/hci_conn.c
|
||
|
+++ b/net/bluetooth/hci_conn.c
|
||
|
@@ -1272,8 +1272,13 @@ int hci_conn_check_link_mode(struct hci_conn *conn)
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
- if (hci_conn_ssp_enabled(conn) &&
|
||
|
- !test_bit(HCI_CONN_ENCRYPT, &conn->flags))
|
||
|
+ /* If Secure Simple Pairing is not enabled, then legacy connection
|
||
|
+ * setup is used and no encryption or key sizes can be enforced.
|
||
|
+ */
|
||
|
+ if (!hci_conn_ssp_enabled(conn))
|
||
|
+ return 1;
|
||
|
+
|
||
|
+ if (!test_bit(HCI_CONN_ENCRYPT, &conn->flags))
|
||
|
return 0;
|
||
|
|
||
|
/* The minimum encryption key size needs to be enforced by the
|
||
|
--
|
||
|
2.20.1
|