diff mbox series

[net-next] tcp: Check space before adding MPTCP options

Message ID 20241204085801.11563-1-moyuanhao3676@163.com (mailing list archive)
State Awaiting Upstream
Delegated to: Netdev Maintainers
Headers show
Series [net-next] tcp: Check space before adding MPTCP options | expand

Checks

Context Check Description
netdev/series_format success Single patches do not need cover letters
netdev/tree_selection success Clearly marked for net-next
netdev/ynl success Generated files up to date; no warnings/errors; no diff in generated;
netdev/fixes_present success Fixes tag not required for -next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 3 this patch: 3
netdev/build_tools success No tools touched, skip
netdev/cc_maintainers success CCed 6 of 6 maintainers
netdev/build_clang success Errors and warnings before: 3 this patch: 3
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success No Fixes tag
netdev/build_allmodconfig_warn success Errors and warnings before: 304 this patch: 304
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 12 lines checked
netdev/build_clang_rust success No Rust files in patch. Skipping build
netdev/kdoc success Errors and warnings before: 1 this patch: 1
netdev/source_inline success Was 0 now: 0
netdev/contest success net-next-2024-12-04--15-02 (tests: 760)

Commit Message

MoYuanhao Dec. 4, 2024, 8:58 a.m. UTC
Ensure enough space before adding MPTCP options in tcp_syn_options()
Added a check to verify sufficient remaining space
before inserting MPTCP options in SYN packets.
This prevents issues when space is insufficient.

Signed-off-by: MoYuanhao <moyuanhao3676@163.com>
---
 net/ipv4/tcp_output.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Matthieu Baerts Dec. 4, 2024, 11:01 a.m. UTC | #1
Hi MoYuanhao,

+Cc MPTCP mailing list.

(Please cc the MPTCP list next time)

On 04/12/2024 09:58, MoYuanhao wrote:
> Ensure enough space before adding MPTCP options in tcp_syn_options()
> Added a check to verify sufficient remaining space
> before inserting MPTCP options in SYN packets.
> This prevents issues when space is insufficient.

Thank you for this patch. I'm surprised we all missed this check, but
yes it is missing.

As mentioned by Eric in his previous email, please add a 'Fixes' tag.
For bug-fixes, you should also Cc stable and target 'net', not 'net-next':

Fixes: cec37a6e41aa ("mptcp: Handle MP_CAPABLE options for outgoing
connections")
Cc: stable@vger.kernel.org


Regarding the code, it looks OK to me, as we did exactly that with
mptcp_synack_options(). In mptcp_established_options(), we pass
'remaining' because many MPTCP options can be set, but not here. So I
guess that's fine to keep the code like that, especially for the 'net' tree.


Also, and linked to Eric's email, did you have an issue with that, or is
it to prevent issues in the future?


One last thing, please don’t repost your patches within one 24h period, see:

  https://docs.kernel.org/process/maintainer-netdev.html


Because the code is OK to me, and the same patch has already been sent
twice to the netdev ML within a few hours, I'm going to apply this patch
in our MPTCP tree with the suggested modifications. Later on, we will
send it for inclusion in the net tree.

pw-bot: awaiting-upstream

(Not sure this pw-bot instruction will work as no net/mptcp/* files have
been modified)

Cheers,
Matt
diff mbox series

Patch

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;
+			}
 		}
 	}