Bluetooth: Fix disconnecting L2CAP channel for credits violation
authorJohan Hedberg <johan.hedberg@intel.com>
Mon, 27 Jan 2014 23:11:34 +0000 (15:11 -0800)
committerJohan Hedberg <johan.hedberg@intel.com>
Thu, 13 Feb 2014 07:51:38 +0000 (09:51 +0200)
The L2CAP specification requires us to disconnect a channel if the
remote device sends us data when it doesn't have any credits to do so.
This patch makes sure that we send the appropriate L2CAP Disconnect
request in this situation.

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

index 5a30fc72f4ba0a05d9c9abb75490e1c5561b7b43..fbc9709abccf6a7f1b922e7cd32c304ab41ff1e8 100644 (file)
@@ -6635,6 +6635,7 @@ static int l2cap_le_data_rcv(struct l2cap_chan *chan, struct sk_buff *skb)
 
        if (!chan->rx_credits) {
                BT_ERR("No credits to receive LE L2CAP data");
+               l2cap_send_disconn_req(chan, ECONNRESET);
                return -ENOBUFS;
        }