diff options
| author | Eric Dumazet <edumazet@google.com> | 2023-07-28 15:03:15 +0000 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2023-07-29 18:13:41 +0100 | 
| commit | 3c5b4d69c358a9275a8de98f87caf6eda644b086 (patch) | |
| tree | fa45713da2bb8c9dc9c4728dcdb990ebd86c98d5 /net/packet | |
| parent | b4b553253091cafe9ec38994acf42795e073bef5 (diff) | |
net: annotate data-races around sk->sk_mark
sk->sk_mark is often read while another thread could change the value.
Fixes: 4a19ec5800fc ("[NET]: Introducing socket mark socket option.")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/packet')
| -rw-r--r-- | net/packet/af_packet.c | 6 | 
1 files changed, 3 insertions, 3 deletions
| diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 8e3ddec4c3d5..d9aa21a2b3a1 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c @@ -2051,7 +2051,7 @@ retry:  	skb->protocol = proto;  	skb->dev = dev;  	skb->priority = sk->sk_priority; -	skb->mark = sk->sk_mark; +	skb->mark = READ_ONCE(sk->sk_mark);  	skb->tstamp = sockc.transmit_time;  	skb_setup_tx_timestamp(skb, sockc.tsflags); @@ -2586,7 +2586,7 @@ static int tpacket_fill_skb(struct packet_sock *po, struct sk_buff *skb,  	skb->protocol = proto;  	skb->dev = dev;  	skb->priority = po->sk.sk_priority; -	skb->mark = po->sk.sk_mark; +	skb->mark = READ_ONCE(po->sk.sk_mark);  	skb->tstamp = sockc->transmit_time;  	skb_setup_tx_timestamp(skb, sockc->tsflags);  	skb_zcopy_set_nouarg(skb, ph.raw); @@ -2988,7 +2988,7 @@ static int packet_snd(struct socket *sock, struct msghdr *msg, size_t len)  		goto out_unlock;  	sockcm_init(&sockc, sk); -	sockc.mark = sk->sk_mark; +	sockc.mark = READ_ONCE(sk->sk_mark);  	if (msg->msg_controllen) {  		err = sock_cmsg_send(sk, msg, &sockc);  		if (unlikely(err)) | 
