mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
inet: implement lockless IP_TOS
Some reads of inet->tos are racy. Add needed READ_ONCE() annotations and convert IP_TOS option lockless. v2: missing changes in include/net/route.h (David Ahern) Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: David Ahern <dsahern@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
ceaa714138
commit
e08d0b3d17
@@ -1024,10 +1024,11 @@ static int tcp_v4_send_synack(const struct sock *sk, struct dst_entry *dst,
|
||||
if (skb) {
|
||||
__tcp_v4_send_check(skb, ireq->ir_loc_addr, ireq->ir_rmt_addr);
|
||||
|
||||
tos = READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_reflect_tos) ?
|
||||
(tcp_rsk(req)->syn_tos & ~INET_ECN_MASK) |
|
||||
(inet_sk(sk)->tos & INET_ECN_MASK) :
|
||||
inet_sk(sk)->tos;
|
||||
tos = READ_ONCE(inet_sk(sk)->tos);
|
||||
|
||||
if (READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_reflect_tos))
|
||||
tos = (tcp_rsk(req)->syn_tos & ~INET_ECN_MASK) |
|
||||
(tos & INET_ECN_MASK);
|
||||
|
||||
if (!INET_ECN_is_capable(tos) &&
|
||||
tcp_bpf_ca_needs_ecn((struct sock *)req))
|
||||
|
||||
Reference in New Issue
Block a user