summaryrefslogtreecommitdiffstats
path: root/net/bluetooth/l2cap_core.c
diff options
context:
space:
mode:
authorJohan Hedberg2014-11-13 09:55:17 +0100
committerMarcel Holtmann2014-11-15 01:46:49 +0100
commitfa37c1aa30e538329b64dd55f401334f4bff47f5 (patch)
tree308b45076f7c0f0600ab97c51d5e474759fc4a20 /net/bluetooth/l2cap_core.c
parentBluetooth: hidp: replace kzalloc/copy_from_user by memdup_user (diff)
downloadkernel-qcow2-linux-fa37c1aa30e538329b64dd55f401334f4bff47f5.tar.gz
kernel-qcow2-linux-fa37c1aa30e538329b64dd55f401334f4bff47f5.tar.xz
kernel-qcow2-linux-fa37c1aa30e538329b64dd55f401334f4bff47f5.zip
Bluetooth: Fix sending incorrect LE CoC PDU in BT_CONNECT2 state
For LE CoC L2CAP servers we don't do security level elevation during the BT_CONNECT2 state (instead LE CoC simply sends an immediate error response if the security level isn't high enough). Therefore if we get a security level change while an LE CoC channel is in the BT_CONNECT2 state we should simply do nothing. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/bluetooth/l2cap_core.c')
-rw-r--r--net/bluetooth/l2cap_core.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index 52e1871d6334..76045497eaa1 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -7332,7 +7332,8 @@ int l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt)
l2cap_start_connection(chan);
else
__set_chan_timer(chan, L2CAP_DISC_TIMEOUT);
- } else if (chan->state == BT_CONNECT2) {
+ } else if (chan->state == BT_CONNECT2 &&
+ chan->mode != L2CAP_MODE_LE_FLOWCTL) {
struct l2cap_conn_rsp rsp;
__u16 res, stat;