diff mbox series

[net,v2] tcp: Return user_mss for TCP_MAXSEG in CLOSE/LISTEN state if user_mss set

Message ID 20230524131331.56664-1-cambda@linux.alibaba.com (mailing list archive)
State Superseded
Delegated to: Netdev Maintainers
Headers show
Series [net,v2] tcp: Return user_mss for TCP_MAXSEG in CLOSE/LISTEN state if user_mss set | expand

Checks

Context Check Description
netdev/series_format success Single patches do not need cover letters
netdev/tree_selection success Clearly marked for net
netdev/fixes_present success Fixes tag present in non-next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 10 this patch: 10
netdev/cc_maintainers warning 3 maintainers not CCed: kuba@kernel.org dsahern@kernel.org davem@davemloft.net
netdev/build_clang success Errors and warnings before: 8 this patch: 8
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 Fixes tag looks correct
netdev/build_allmodconfig_warn success Errors and warnings before: 10 this patch: 10
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 9 lines checked
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0

Commit Message

Cambda Zhu May 24, 2023, 1:13 p.m. UTC
This patch replaces the tp->mss_cache check in getting TCP_MAXSEG
with tp->rx_opt.user_mss check for CLOSE/LISTEN sock. Since
tp->mss_cache is initialized with TCP_MSS_DEFAULT, checking if
it's zero is probably a bug.

With this change, getting TCP_MAXSEG before connecting will return
default MSS normally, and return user_mss if user_mss is set.

Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Reported-by: Jack Yang <mingliang@linux.alibaba.com>
Suggested-by: Eric Dumazet <edumazet@google.com>
Link: https://lore.kernel.org/netdev/CANn89i+3kL9pYtkxkwxwNMzvC_w3LNUum_2=3u+UyLBmGmifHA@mail.gmail.com/#t
Signed-off-by: Cambda Zhu <cambda@linux.alibaba.com>
Link: https://lore.kernel.org/netdev/14D45862-36EA-4076-974C-EA67513C92F6@linux.alibaba.com/
Reviewed-by: Jason Xing <kerneljasonxing@gmail.com>
---
v2:
- Update Fixes tag with commit in current tree.
- Add Jason's Reviewed-by tag.

v1:
- Return default MSS if user_mss not set for backwards compatibility.
- Send patch to net instead of net-next, with Fixes tag.
- Add Eric's tags.
---
 net/ipv4/tcp.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Jason Xing May 26, 2023, 11:35 a.m. UTC | #1
On Wed, May 24, 2023 at 9:14 PM Cambda Zhu <cambda@linux.alibaba.com> wrote:
>
> This patch replaces the tp->mss_cache check in getting TCP_MAXSEG
> with tp->rx_opt.user_mss check for CLOSE/LISTEN sock. Since
> tp->mss_cache is initialized with TCP_MSS_DEFAULT, checking if
> it's zero is probably a bug.
>
> With this change, getting TCP_MAXSEG before connecting will return
> default MSS normally, and return user_mss if user_mss is set.
>
> Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
> Reported-by: Jack Yang <mingliang@linux.alibaba.com>
> Suggested-by: Eric Dumazet <edumazet@google.com>
> Link: https://lore.kernel.org/netdev/CANn89i+3kL9pYtkxkwxwNMzvC_w3LNUum_2=3u+UyLBmGmifHA@mail.gmail.com/#t
> Signed-off-by: Cambda Zhu <cambda@linux.alibaba.com>
> Link: https://lore.kernel.org/netdev/14D45862-36EA-4076-974C-EA67513C92F6@linux.alibaba.com/
> Reviewed-by: Jason Xing <kerneljasonxing@gmail.com>
> ---
> v2:
> - Update Fixes tag with commit in current tree.
> - Add Jason's Reviewed-by tag.
>
> v1:
> - Return default MSS if user_mss not set for backwards compatibility.
> - Send patch to net instead of net-next, with Fixes tag.
> - Add Eric's tags.
> ---
>  net/ipv4/tcp.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
> index 4d6392c16b7a..3e01a58724b8 100644
> --- a/net/ipv4/tcp.c
> +++ b/net/ipv4/tcp.c
> @@ -4081,7 +4081,8 @@ int do_tcp_getsockopt(struct sock *sk, int level,
>         switch (optname) {
>         case TCP_MAXSEG:
>                 val = tp->mss_cache;
> -               if (!val && ((1 << sk->sk_state) & (TCPF_CLOSE | TCPF_LISTEN)))
> +               if (tp->rx_opt.user_mss &&
> +                   ((1 << sk->sk_state) & (TCPF_CLOSE | TCPF_LISTEN)))
>                         val = tp->rx_opt.user_mss;
>                 if (tp->repair)
>                         val = tp->rx_opt.mss_clamp;
> --
> 2.16.6
>

Ah, I just realised that you didn't CC other maintainers though
reading the patchwork. Please run this command [1] before you submit a
patch next time.

[1]: $./scripts/get_maintainer.pl net/ipv4/tcp.c

+CC kuba, davem, dsahern

Thanks,
Jason
Jakub Kicinski May 27, 2023, 2:41 a.m. UTC | #2
On Wed, 24 May 2023 21:13:31 +0800 Cambda Zhu wrote:
> This patch replaces the tp->mss_cache check in getting TCP_MAXSEG
> with tp->rx_opt.user_mss check for CLOSE/LISTEN sock. Since
> tp->mss_cache is initialized with TCP_MSS_DEFAULT, checking if
> it's zero is probably a bug.
> 
> With this change, getting TCP_MAXSEG before connecting will return
> default MSS normally, and return user_mss if user_mss is set.

Hi, your patch was marked as "Changes requested" by DaveM (I think).
Presumably because of the missing CCs. Would you mind resending one
more time with the fuller CC list?
Cambda Zhu May 27, 2023, 4:20 a.m. UTC | #3
> On May 27, 2023, at 10:41, Jakub Kicinski <kuba@kernel.org> wrote:
> 
> On Wed, 24 May 2023 21:13:31 +0800 Cambda Zhu wrote:
>> This patch replaces the tp->mss_cache check in getting TCP_MAXSEG
>> with tp->rx_opt.user_mss check for CLOSE/LISTEN sock. Since
>> tp->mss_cache is initialized with TCP_MSS_DEFAULT, checking if
>> it's zero is probably a bug.
>> 
>> With this change, getting TCP_MAXSEG before connecting will return
>> default MSS normally, and return user_mss if user_mss is set.
> 
> Hi, your patch was marked as "Changes requested" by DaveM (I think).
> Presumably because of the missing CCs. Would you mind resending one
> more time with the fuller CC list?

I have resubmitted the patch and hope I got everything right this time :)

Thanks!

Cambda
diff mbox series

Patch

diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 4d6392c16b7a..3e01a58724b8 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -4081,7 +4081,8 @@  int do_tcp_getsockopt(struct sock *sk, int level,
 	switch (optname) {
 	case TCP_MAXSEG:
 		val = tp->mss_cache;
-		if (!val && ((1 << sk->sk_state) & (TCPF_CLOSE | TCPF_LISTEN)))
+		if (tp->rx_opt.user_mss &&
+		    ((1 << sk->sk_state) & (TCPF_CLOSE | TCPF_LISTEN)))
 			val = tp->rx_opt.user_mss;
 		if (tp->repair)
 			val = tp->rx_opt.mss_clamp;