summaryrefslogtreecommitdiff
path: root/net/ipv4/tcp_diag.c
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2025-08-28 13:27:35 +0300
committerJakub Kicinski <kuba@kernel.org>2025-08-30 05:29:24 +0300
commit8e60447f0831cdcafa2233e5547ee0eba8a5f8da (patch)
tree10dedfbf044efd6155257e86e4496274b68c2169 /net/ipv4/tcp_diag.c
parent9a574257b968426df5c180df1199d4b082f80ff9 (diff)
downloadlinux-8e60447f0831cdcafa2233e5547ee0eba8a5f8da.tar.xz
tcp: annotate data-races in tcp_req_diag_fill()
req->num_retrans and rsk_timer.expires are read locklessly, and can be changed from tcp_rtx_synack(). Add READ_ONCE()/WRITE_ONCE() annotations. Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com> Link: https://patch.msgid.link/20250828102738.2065992-3-edumazet@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/ipv4/tcp_diag.c')
-rw-r--r--net/ipv4/tcp_diag.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/ipv4/tcp_diag.c b/net/ipv4/tcp_diag.c
index 2f3a779ce7a2..4ed6b93527f4 100644
--- a/net/ipv4/tcp_diag.c
+++ b/net/ipv4/tcp_diag.c
@@ -248,12 +248,12 @@ static int tcp_req_diag_fill(struct sock *sk, struct sk_buff *skb,
inet_diag_msg_common_fill(r, sk);
r->idiag_state = TCP_SYN_RECV;
r->idiag_timer = 1;
- r->idiag_retrans = reqsk->num_retrans;
+ r->idiag_retrans = READ_ONCE(reqsk->num_retrans);
BUILD_BUG_ON(offsetof(struct inet_request_sock, ir_cookie) !=
offsetof(struct sock, sk_cookie));
- tmo = inet_reqsk(sk)->rsk_timer.expires - jiffies;
+ tmo = READ_ONCE(inet_reqsk(sk)->rsk_timer.expires) - jiffies;
r->idiag_expires = jiffies_delta_to_msecs(tmo);
r->idiag_rqueue = 0;
r->idiag_wqueue = 0;