summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMoYuanhao <moyuanhao3676@163.com>2024-12-09 13:28:14 +0100
committerJakub Kicinski <kuba@kernel.org>2024-12-10 18:26:52 -0800
commit06d64ab46f19ac12f59a1d2aa8cd196b2e4edb5b (patch)
treef5870d0869d99786ea8fd9f0c5dd8e0fe6f71f37
parentbbe4b41259a3e255a16d795486d331c1670b4e75 (diff)
downloadlinux-stable-06d64ab46f19ac12f59a1d2aa8cd196b2e4edb5b.tar.gz
linux-stable-06d64ab46f19ac12f59a1d2aa8cd196b2e4edb5b.tar.bz2
linux-stable-06d64ab46f19ac12f59a1d2aa8cd196b2e4edb5b.zip
tcp: check space before adding MPTCP SYN options
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>
-rw-r--r--net/ipv4/tcp_output.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index 5485a70b5fe5..0e5b9a654254 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -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;
+ }
}
}