]> xenbits.xensource.com Git - people/aperard/linux.git/commitdiff
tcp: annotate a data-race around sysctl_tcp_wmem[0]
authorJason Xing <kernelxing@tencent.com>
Fri, 8 Mar 2024 11:25:04 +0000 (19:25 +0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 11 Mar 2024 10:37:40 +0000 (10:37 +0000)
When reading wmem[0], it could be changed concurrently without
READ_ONCE() protection. So add one annotation here.

Signed-off-by: Jason Xing <kernelxing@tencent.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp.c

index b091149742b1d0103e25981e940c17fae1b4d917..d20b62d521712ae7982b1e73fddf7d4be0df696d 100644 (file)
@@ -975,7 +975,7 @@ int tcp_wmem_schedule(struct sock *sk, int copy)
         * Use whatever is left in sk->sk_forward_alloc and tcp_wmem[0]
         * to guarantee some progress.
         */
-       left = sock_net(sk)->ipv4.sysctl_tcp_wmem[0] - sk->sk_wmem_queued;
+       left = READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_wmem[0]) - sk->sk_wmem_queued;
        if (left > 0)
                sk_forced_mem_schedule(sk, min(left, copy));
        return min(copy, sk->sk_forward_alloc);