Commit fc1a65ff authored by Jason Xing's avatar Jason Xing Committed by Geliang Tang
Browse files

tcp: annotate a data-race around sysctl_tcp_wmem[0]

mainline inclusion
from mainline-v6.9-rc1
commit 683a67da95616c91a85b98e41dc8eefe9f2b29e7
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I9VYQ9
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=683a67da95616c91a85b98e41dc8eefe9f2b29e7



--------------------------------

When reading wmem[0], it could be changed concurrently without
READ_ONCE() protection. So add one annotation here.

Signed-off-by: default avatarJason Xing <kernelxing@tencent.com>
Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Reviewed-by: default avatarJackie Liu <liuyun01@kylinos.cn>
Signed-off-by: default avatarGeliang Tang <tanggeliang@kylinos.cn>
parent c6c933e9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -978,7 +978,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);