aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJohan Hedberg <johan.hedberg@intel.com>2014-01-17 13:45:11 -0500
committerJohan Hedberg <johan.hedberg@intel.com>2014-02-13 02:51:36 -0500
commit61a939c68ee033d43be3aa436d95eb8afdd16142 (patch)
tree70ee2165a487d8bb8059fd13a9b0fe0d114db534 /include
parent162b49e75cf2c6858852e7a0ae2c2e30e51f0e09 (diff)
Bluetooth: Queue incoming ACL data until BT_CONNECTED state is reached
This patch adds a queue for incoming L2CAP data that's received before l2cap_connect_cfm is called and processes the data once l2cap_connect_cfm is called. This way we ensure that we have e.g. all remote features before processing L2CAP signaling data (which is very important for making the correct security decisions). The processing of the pending rx data needs to be done through queue_work since unlike l2cap_recv_acldata, l2cap_connect_cfm is called with the hci_dev lock held which could cause potential deadlocks. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'include')
-rw-r--r--include/net/bluetooth/l2cap.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h
index c695083eee2b..85cf40acc47e 100644
--- a/include/net/bluetooth/l2cap.h
+++ b/include/net/bluetooth/l2cap.h
@@ -624,6 +624,9 @@ struct l2cap_conn {
624 __u32 rx_len; 624 __u32 rx_len;
625 __u8 tx_ident; 625 __u8 tx_ident;
626 626
627 struct sk_buff_head pending_rx;
628 struct work_struct pending_rx_work;
629
627 __u8 disc_reason; 630 __u8 disc_reason;
628 631
629 struct delayed_work security_timer; 632 struct delayed_work security_timer;