Skip to content

Commit 34dfde4

Browse files
guangmuzhukuba-moo
authored andcommitted
tcp: Return user_mss for TCP_MAXSEG in CLOSE/LISTEN state if user_mss set
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> Reviewed-by: Eric Dumazet <edumazet@google.com> Link: https://lore.kernel.org/r/20230527040317.68247-1-cambda@linux.alibaba.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 4faeee0 commit 34dfde4

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

net/ipv4/tcp.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4078,7 +4078,8 @@ int do_tcp_getsockopt(struct sock *sk, int level,
40784078
switch (optname) {
40794079
case TCP_MAXSEG:
40804080
val = tp->mss_cache;
4081-
if (!val && ((1 << sk->sk_state) & (TCPF_CLOSE | TCPF_LISTEN)))
4081+
if (tp->rx_opt.user_mss &&
4082+
((1 << sk->sk_state) & (TCPF_CLOSE | TCPF_LISTEN)))
40824083
val = tp->rx_opt.user_mss;
40834084
if (tp->repair)
40844085
val = tp->rx_opt.mss_clamp;

0 commit comments

Comments
 (0)