From: Johan Hedberg <johan.hedberg@intel.com>
Date: Mon, 7 Oct 2013 12:44:48 +0000 (+0200)
Subject: Bluetooth: Fix suspending the L2CAP socket if we start with 0 credits
X-Git-Tag: v3.14-rc1~94^2~482^2^2~9^2~11
X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=029727a39a4316c081347749d5c25f76d5eb891c;p=linux.git

Bluetooth: Fix suspending the L2CAP socket if we start with 0 credits

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>
---

diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index 407e9d61d061..82aa6f352b20 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -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)