mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 02:50:43 +00:00
Bluetooth: Move SC-only check outside of BT_CONFIG branch
Checking for SC-only mode requirements when we get an encrypt change event shouldn't be limited to the BT_CONFIG state but done any time encryption changes. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
b1f663c91c
commit
035ad621b6
1 changed files with 12 additions and 12 deletions
|
@ -2650,22 +2650,22 @@ static void hci_encrypt_change_evt(struct hci_dev *hdev, struct sk_buff *skb)
|
||||||
goto unlock;
|
goto unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* In Secure Connections Only mode, do not allow any connections
|
||||||
|
* that are not encrypted with AES-CCM using a P-256 authenticated
|
||||||
|
* combination key.
|
||||||
|
*/
|
||||||
|
if (hci_dev_test_flag(hdev, HCI_SC_ONLY) &&
|
||||||
|
(!test_bit(HCI_CONN_AES_CCM, &conn->flags) ||
|
||||||
|
conn->key_type != HCI_LK_AUTH_COMBINATION_P256)) {
|
||||||
|
hci_connect_cfm(conn, HCI_ERROR_AUTH_FAILURE);
|
||||||
|
hci_conn_drop(conn);
|
||||||
|
goto unlock;
|
||||||
|
}
|
||||||
|
|
||||||
if (conn->state == BT_CONFIG) {
|
if (conn->state == BT_CONFIG) {
|
||||||
if (!ev->status)
|
if (!ev->status)
|
||||||
conn->state = BT_CONNECTED;
|
conn->state = BT_CONNECTED;
|
||||||
|
|
||||||
/* In Secure Connections Only mode, do not allow any
|
|
||||||
* connections that are not encrypted with AES-CCM
|
|
||||||
* using a P-256 authenticated combination key.
|
|
||||||
*/
|
|
||||||
if (hci_dev_test_flag(hdev, HCI_SC_ONLY) &&
|
|
||||||
(!test_bit(HCI_CONN_AES_CCM, &conn->flags) ||
|
|
||||||
conn->key_type != HCI_LK_AUTH_COMBINATION_P256)) {
|
|
||||||
hci_connect_cfm(conn, HCI_ERROR_AUTH_FAILURE);
|
|
||||||
hci_conn_drop(conn);
|
|
||||||
goto unlock;
|
|
||||||
}
|
|
||||||
|
|
||||||
hci_connect_cfm(conn, ev->status);
|
hci_connect_cfm(conn, ev->status);
|
||||||
hci_conn_drop(conn);
|
hci_conn_drop(conn);
|
||||||
} else
|
} else
|
||||||
|
|
Loading…
Reference in a new issue