summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2009-02-12 16:23:03 +0100
committerMarcel Holtmann <marcel@holtmann.org>2009-02-27 06:14:44 +0100
commit96a3183322cba1a2846771b067c99b9d6f481263 (patch)
treefde0c0d4c7ad3033acbeadfe67c79fa539e50feb
parent00ae4af91d8c5b6814e2bb3bfaaf743845f989eb (diff)
downloadop-kernel-dev-96a3183322cba1a2846771b067c99b9d6f481263.zip
op-kernel-dev-96a3183322cba1a2846771b067c99b9d6f481263.tar.gz
Bluetooth: Set authentication requirement before requesting it
The authentication requirement got only updated when the security level increased. This is a wrong behavior. The authentication requirement is read by the Bluetooth daemon to make proper decisions when handling the IO capabilities exchange. So set the value that is currently expected by the higher layers like L2CAP and RFCOMM. Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
-rw-r--r--net/bluetooth/hci_conn.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index 96281a1..efd5c92 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -397,12 +397,13 @@ static int hci_conn_auth(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
{
BT_DBG("conn %p", conn);
- if (sec_level > conn->sec_level) {
+ if (sec_level > conn->sec_level)
conn->sec_level = sec_level;
- conn->auth_type = auth_type;
- } else if (conn->link_mode & HCI_LM_AUTH)
+ else if (conn->link_mode & HCI_LM_AUTH)
return 1;
+ conn->auth_type = auth_type;
+
if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->pend)) {
struct hci_cp_auth_requested cp;
cp.handle = cpu_to_le16(conn->handle);
@@ -418,9 +419,6 @@ int hci_conn_security(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
{
BT_DBG("conn %p", conn);
- if (conn->auth_type == 0xff)
- conn->auth_type = auth_type;
-
if (sec_level == BT_SECURITY_SDP)
return 1;
OpenPOWER on IntegriCloud