diff options
| author | MoYuanhao <[email protected]> | 2024-12-09 12:28:14 +0000 |
|---|---|---|
| committer | Jakub Kicinski <[email protected]> | 2024-12-11 02:26:52 +0000 |
| commit | 06d64ab46f19ac12f59a1d2aa8cd196b2e4edb5b (patch) | |
| tree | f5870d0869d99786ea8fd9f0c5dd8e0fe6f71f37 /net/ipv4/tcp_output.c | |
| parent | Documentation: networking: Add a caveat to nexthop_compat_mode sysctl (diff) | |
| download | kernel-06d64ab46f19ac12f59a1d2aa8cd196b2e4edb5b.tar.gz kernel-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 <[email protected]>
Fixes: cec37a6e41aa ("mptcp: Handle MP_CAPABLE options for outgoing connections")
Cc: [email protected]
Acked-by: Matthieu Baerts (NGI0) <[email protected]>
[ Matt: Add Fixes, cc Stable, update Description ]
Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
Reviewed-by: Eric Dumazet <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Jakub Kicinski <[email protected]>
Diffstat (limited to 'net/ipv4/tcp_output.c')
| -rw-r--r-- | net/ipv4/tcp_output.c | 6 |
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; + } } } |
