From 435aff3962d16737376bdfb2d6f71b33802011c9 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 22 May 2019 09:05:40 +0200 Subject: [PATCH 498/773] Bluetooth: Check key sizes only when Secure Simple Pairing is enabled 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 Cc: stable@vger.kernel.org --- net/bluetooth/hci_conn.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) --- a/net/bluetooth/hci_conn.c +++ b/net/bluetooth/hci_conn.c @@ -1272,8 +1272,13 @@ int hci_conn_check_link_mode(struct hci_ 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; return 1;