Bluetooth: Fix suspending the L2CAP socket if we start with 0 credits
authorJohan Hedberg <johan.hedberg@intel.com>
Mon, 7 Oct 2013 12:44:48 +0000 (14:44 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 5 Dec 2013 15:05:35 +0000 (07:05 -0800)
If the peer gives us zero credits in its connection request or response
we must call the suspend channel callback so the BT_SK_SUSPEND flag gets
set and user space is blocked from sending data to the socket.

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

index 407e9d61d061697a7d17c1b2773c2c2c00f474e0..82aa6f352b202a1980cb59f0a37b9689622fbb53 100644 (file)
@@ -1202,6 +1202,9 @@ static void l2cap_le_flowctl_start(struct l2cap_chan *chan)
        chan->sdu_len = 0;
 
        skb_queue_head_init(&chan->tx_q);
+
+       if (!chan->tx_credits)
+               chan->ops->suspend(chan);
 }
 
 static void l2cap_chan_ready(struct l2cap_chan *chan)