Bluetooth: Fix triggering BR/EDR L2CAP Connect too early
authorJohan Hedberg <johan.hedberg@intel.com>
Fri, 11 Apr 2014 19:02:31 +0000 (12:02 -0700)
committerJohan Hedberg <johan.hedberg@intel.com>
Fri, 25 Apr 2014 06:47:15 +0000 (09:47 +0300)
Commit 1c2e004183178 introduced an event handler for the encryption key
refresh complete event with the intent of fixing some LE/SMP cases.
However, this event is shared with BR/EDR and there we actually want to
act only on the auth_complete event (which comes after the key refresh).

If we do not do this we may trigger an L2CAP Connect Request too early
and cause the remote side to return a security block error.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Cc: stable@vger.kernel.org
net/bluetooth/hci_event.c

index 49774912cb01f23ef6f85cb26f8613f538edec94..15010a230b6d5fdf08bb9cd91d7b0ac5aee25c61 100644 (file)
@@ -3330,6 +3330,12 @@ static void hci_key_refresh_complete_evt(struct hci_dev *hdev,
        if (!conn)
                goto unlock;
 
+       /* For BR/EDR the necessary steps are taken through the
+        * auth_complete event.
+        */
+       if (conn->type != LE_LINK)
+               goto unlock;
+
        if (!ev->status)
                conn->sec_level = conn->pending_sec_level;