Commit db3815a2 authored by Kuniyuki Iwashima's avatar Kuniyuki Iwashima Committed by David S. Miller
Browse files

tcp: Fix a data-race around sysctl_tcp_challenge_ack_limit.



While reading sysctl_tcp_challenge_ack_limit, it can be changed
concurrently.  Thus, we need to add READ_ONCE() to its reader.

Fixes: 282f23c6 ("tcp: implement RFC 5961 3.2")
Signed-off-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9fb90193
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3629,7 +3629,7 @@ static void tcp_send_challenge_ack(struct sock *sk)
	/* Then check host-wide RFC 5961 rate limit. */
	now = jiffies / HZ;
	if (now != challenge_timestamp) {
		u32 ack_limit = net->ipv4.sysctl_tcp_challenge_ack_limit;
		u32 ack_limit = READ_ONCE(net->ipv4.sysctl_tcp_challenge_ack_limit);
		u32 half = (ack_limit + 1) >> 1;

		challenge_timestamp = now;