]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
tcp: check space before adding MPTCP SYN options
authorMoYuanhao <moyuanhao3676@163.com>
Mon, 9 Dec 2024 12:28:14 +0000 (13:28 +0100)
committerJakub Kicinski <kuba@kernel.org>
Wed, 11 Dec 2024 02:26:52 +0000 (18:26 -0800)
Ensure there is enough space before adding MPTCP options in
tcp_syn_options().

Without this check, 'remaining' could underflow, and causes issues. If
there is not enough space, MPTCP should not be used.

Signed-off-by: MoYuanhao <moyuanhao3676@163.com>
Fixes: cec37a6e41aa ("mptcp: Handle MP_CAPABLE options for outgoing connections")
Cc: stable@vger.kernel.org
Acked-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
[ Matt: Add Fixes, cc Stable, update Description ]
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://patch.msgid.link/20241209-net-mptcp-check-space-syn-v1-1-2da992bb6f74@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv4/tcp_output.c

index 5485a70b5fe5a6039d19f4321c3c2ec8ecc6ffea..0e5b9a654254b32907ee9739f3443791104bd611 100644 (file)
@@ -883,8 +883,10 @@ static unsigned int tcp_syn_options(struct sock *sk, struct sk_buff *skb,
                unsigned int size;
 
                if (mptcp_syn_options(sk, skb, &size, &opts->mptcp)) {
-                       opts->options |= OPTION_MPTCP;
-                       remaining -= size;
+                       if (remaining >= size) {
+                               opts->options |= OPTION_MPTCP;
+                               remaining -= size;
+                       }
                }
        }