aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp.c
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2019-11-05 14:11:54 -0800
committerDavid S. Miller <davem@davemloft.net>2019-11-06 16:14:48 -0800
commit099ecf59f05b5f30f42ebac0ab8cb94f9b18c90c (patch)
tree06d62b7b24635bbb78ad38f24933cad260b5c346 /net/ipv4/tcp.c
parentnet: annotate lockless accesses to sk->sk_ack_backlog (diff)
downloadlinux-dev-099ecf59f05b5f30f42ebac0ab8cb94f9b18c90c.tar.xz
linux-dev-099ecf59f05b5f30f42ebac0ab8cb94f9b18c90c.zip
net: annotate lockless accesses to sk->sk_max_ack_backlog
sk->sk_max_ack_backlog can be read without any lock being held at least in TCP/DCCP cases. We need to use READ_ONCE()/WRITE_ONCE() to avoid load/store tearing and/or potential KCSAN warnings. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp.c')
-rw-r--r--net/ipv4/tcp.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 68375f7ffdce..fb1666440e10 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -3226,7 +3226,7 @@ void tcp_get_info(struct sock *sk, struct tcp_info *info)
* tcpi_sacked -> max backlog
*/
info->tcpi_unacked = READ_ONCE(sk->sk_ack_backlog);
- info->tcpi_sacked = sk->sk_max_ack_backlog;
+ info->tcpi_sacked = READ_ONCE(sk->sk_max_ack_backlog);
return;
}