summaryrefslogtreecommitdiff
path: root/net/ipv4/tcp_output.c
diff options
context:
space:
mode:
authorJakub Kicinski <kuba@kernel.org>2025-08-22 15:59:00 -0700
committerJakub Kicinski <kuba@kernel.org>2025-08-22 15:59:00 -0700
commit718d6e8669cb8cf4deda8b69950b8f8c62dbbcaa (patch)
tree872d306c59671201e58538bb5d6e1404bb4c7cf6 /net/ipv4/tcp_output.c
parent02614eee26fbdfd73b944769001cefeff6ed008c (diff)
parent9217146fee49575dfe4ac9416587392fc31171f1 (diff)
Merge branch 'tcp-user_mss-and-tcp_maxseg-series'
Eric Dumazet says: ==================== tcp: user_mss and TCP_MAXSEG series Annotate data-races around tp->rx_opt.user_mss and make TCP_MAXSEG lockless. ==================== Link: https://patch.msgid.link/20250821141901.18839-1-edumazet@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/ipv4/tcp_output.c')
-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 dfbac0876d96..86892c8672ed 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -3890,6 +3890,7 @@ static void tcp_connect_init(struct sock *sk)
const struct dst_entry *dst = __sk_dst_get(sk);
struct tcp_sock *tp = tcp_sk(sk);
__u8 rcv_wscale;
+ u16 user_mss;
u32 rcv_wnd;
/* We'll fix this up when we get a response from the other end.
@@ -3902,8 +3903,9 @@ static void tcp_connect_init(struct sock *sk)
tcp_ao_connect_init(sk);
/* If user gave his TCP_MAXSEG, record it to clamp */
- if (tp->rx_opt.user_mss)
- tp->rx_opt.mss_clamp = tp->rx_opt.user_mss;
+ user_mss = READ_ONCE(tp->rx_opt.user_mss);
+ if (user_mss)
+ tp->rx_opt.mss_clamp = user_mss;
tp->max_window = 0;
tcp_mtup_init(sk);
tcp_sync_mss(sk, dst_mtu(dst));