Skip to content

Commit ad32b3c

Browse files
committed
Merge branch 'tcp-wmem-data-races'
Jason Xing says: ==================== annotate data-races around sysctl_tcp_wmem[0] Adding simple READ_ONCE() can avoid reading the sysctl knob meanwhile someone is trying to change it. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
2 parents 900b280 + 683a67d commit ad32b3c

2 files changed

Lines changed: 2 additions & 2 deletions

File tree

net/ipv4/tcp.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -975,7 +975,7 @@ int tcp_wmem_schedule(struct sock *sk, int copy)
975975
* Use whatever is left in sk->sk_forward_alloc and tcp_wmem[0]
976976
* to guarantee some progress.
977977
*/
978-
left = sock_net(sk)->ipv4.sysctl_tcp_wmem[0] - sk->sk_wmem_queued;
978+
left = READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_wmem[0]) - sk->sk_wmem_queued;
979979
if (left > 0)
980980
sk_forced_mem_schedule(sk, min(left, copy));
981981
return min(copy, sk->sk_forward_alloc);

net/mptcp/protocol.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -850,7 +850,7 @@ static inline void __mptcp_sync_sndbuf(struct sock *sk)
850850
if (sk->sk_userlocks & SOCK_SNDBUF_LOCK)
851851
return;
852852

853-
new_sndbuf = sock_net(sk)->ipv4.sysctl_tcp_wmem[0];
853+
new_sndbuf = READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_wmem[0]);
854854
mptcp_for_each_subflow(mptcp_sk(sk), subflow) {
855855
ssk_sndbuf = READ_ONCE(mptcp_subflow_tcp_sock(subflow)->sk_sndbuf);
856856

0 commit comments

Comments
 (0)