diff options
author | Eric Dumazet <edumazet@google.com> | 2023-09-22 03:42:16 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2023-10-01 19:39:18 +0100 |
commit | e08d0b3d172311e2bb500865c0d0038533d0ff11 (patch) | |
tree | 0c5343300213611a52bf2904f1aa129567929171 /include/net/ip.h | |
parent | ceaa714138a372ac63cc2c5c19ee0882d22827f9 (diff) | |
download | linux-e08d0b3d172311e2bb500865c0d0038533d0ff11.tar.gz linux-e08d0b3d172311e2bb500865c0d0038533d0ff11.tar.bz2 linux-e08d0b3d172311e2bb500865c0d0038533d0ff11.zip |
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>
Diffstat (limited to 'include/net/ip.h')
-rw-r--r-- | include/net/ip.h | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/include/net/ip.h b/include/net/ip.h index 46933a0d98ea..6fbc0dcf4b97 100644 --- a/include/net/ip.h +++ b/include/net/ip.h @@ -258,7 +258,7 @@ static inline u8 ip_sendmsg_scope(const struct inet_sock *inet, static inline __u8 get_rttos(struct ipcm_cookie* ipc, struct inet_sock *inet) { - return (ipc->tos != -1) ? RT_TOS(ipc->tos) : RT_TOS(inet->tos); + return (ipc->tos != -1) ? RT_TOS(ipc->tos) : RT_TOS(READ_ONCE(inet->tos)); } /* datagram.c */ @@ -810,6 +810,5 @@ int ip_sock_set_mtu_discover(struct sock *sk, int val); void ip_sock_set_pktinfo(struct sock *sk); void ip_sock_set_recverr(struct sock *sk); void ip_sock_set_tos(struct sock *sk, int val); -void __ip_sock_set_tos(struct sock *sk, int val); #endif /* _IP_H */ |