summaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorMat Martineau <mathewm@codeaurora.org>2012-05-04 14:20:31 -0700
committerGustavo Padovan <gustavo.padovan@collabora.co.uk>2012-05-16 16:14:02 -0300
commita6a5568c03c4805d4d250f6bd9d468eeeb4ea059 (patch)
treea85da07516e3c584056373fbad175a3757040b5c /include/net
parentef191aded58c5e6860b01f463818584a420a4d6b (diff)
downloadlinux-a6a5568c03c4805d4d250f6bd9d468eeeb4ea059.tar.gz
linux-a6a5568c03c4805d4d250f6bd9d468eeeb4ea059.tar.xz
linux-a6a5568c03c4805d4d250f6bd9d468eeeb4ea059.zip
Bluetooth: Lock the L2CAP channel when sending
The ERTM and streaming mode transmit queue must only be accessed while the L2CAP channel lock is held. Locking the channel before calling l2cap_chan_send ensures that multiple threads cannot simultaneously manipulate the queue when sending and receiving concurrently. L2CAP channel locking had previously moved to the l2cap_chan struct instead of the associated socket, so some of the old socket locking can also be removed in this patch. Signed-off-by: Mat Martineau <mathewm@codeaurora.org> Signed-off-by: Gustavo Padovan <gustavo@padovan.org>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/bluetooth/bluetooth.h2
1 files changed, 0 insertions, 2 deletions
diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h
index c34a9a6184a1..7981ca48b83a 100644
--- a/include/net/bluetooth/bluetooth.h
+++ b/include/net/bluetooth/bluetooth.h
@@ -257,12 +257,10 @@ static inline struct sk_buff *bt_skb_send_alloc(struct sock *sk,
{
struct sk_buff *skb;
- release_sock(sk);
if ((skb = sock_alloc_send_skb(sk, len + BT_SKB_RESERVE, nb, err))) {
skb_reserve(skb, BT_SKB_RESERVE);
bt_cb(skb)->incoming = 0;
}
- lock_sock(sk);
if (!skb && *err)
return NULL;