]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
Bluetooth: LE L2CAP: Disconnect if sum of payload sizes exceed SDU
authorChristian Eggers <ceggers@arri.de>
Wed, 25 Feb 2026 17:07:27 +0000 (18:07 +0100)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Thu, 12 Mar 2026 19:26:10 +0000 (15:26 -0400)
Core 6.0, Vol 3, Part A, 3.4.3:
"... If the sum of the payload sizes for the K-frames exceeds the
specified SDU length, the receiver shall disconnect the channel."

This fixes L2CAP/LE/CFC/BV-27-C (running together with 'l2test -r -P
0x0027 -V le_public').

Fixes: aac23bf63659 ("Bluetooth: Implement LE L2CAP reassembly")
Signed-off-by: Christian Eggers <ceggers@arri.de>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
net/bluetooth/l2cap_core.c

index 3056dcd5fa2f05f1e9091307fac5063d8d008612..0f400051f0937238672154382992a094e3d33a12 100644 (file)
@@ -6729,6 +6729,7 @@ static int l2cap_ecred_data_rcv(struct l2cap_chan *chan, struct sk_buff *skb)
 
        if (chan->sdu->len + skb->len > chan->sdu_len) {
                BT_ERR("Too much LE L2CAP data received");
+               l2cap_send_disconn_req(chan, ECONNRESET);
                err = -EINVAL;
                goto failed;
        }