net/packet: annotate data race in packet_sendmsg()
There is a known race in packet_sendmsg(), addressed
in commit 32d3182cd2
("net/packet: fix race in tpacket_snd()")
Now we have data_race(), we can use it to avoid a future KCSAN warning,
as syzbot loves stressing af_packet sockets :)
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
b71eaed8c0
Коммит
d1b5bee4c8
|
@ -3034,10 +3034,13 @@ static int packet_sendmsg(struct socket *sock, struct msghdr *msg, size_t len)
|
|||
struct sock *sk = sock->sk;
|
||||
struct packet_sock *po = pkt_sk(sk);
|
||||
|
||||
if (po->tx_ring.pg_vec)
|
||||
/* Reading tx_ring.pg_vec without holding pg_vec_lock is racy.
|
||||
* tpacket_snd() will redo the check safely.
|
||||
*/
|
||||
if (data_race(po->tx_ring.pg_vec))
|
||||
return tpacket_snd(po, msg);
|
||||
else
|
||||
return packet_snd(sock, msg, len);
|
||||
|
||||
return packet_snd(sock, msg, len);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Загрузка…
Ссылка в новой задаче