net: add missing data-race annotations around sk->sk_peek_off
[ Upstream commit 11695c6e966b0ec7ed1d16777d294cef865a5c91 ]
sk_getsockopt() runs locklessly, thus we need to annotate the read
of sk->sk_peek_off.
While we are at it, add corresponding annotations to sk_set_peek_off()
and unix_set_peek_off().
Fixes: b9bb53f383
("sock: convert sk_peek_offset functions to WRITE_ONCE")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
b53468041d
commit
dd7a1ff07c
@ -1815,7 +1815,7 @@ int sk_getsockopt(struct sock *sk, int level, int optname,
|
||||
if (!sock->ops->set_peek_off)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
v.val = sk->sk_peek_off;
|
||||
v.val = READ_ONCE(sk->sk_peek_off);
|
||||
break;
|
||||
case SO_NOFCS:
|
||||
v.val = sock_flag(sk, SOCK_NOFCS);
|
||||
@ -3119,7 +3119,7 @@ EXPORT_SYMBOL(__sk_mem_reclaim);
|
||||
|
||||
int sk_set_peek_off(struct sock *sk, int val)
|
||||
{
|
||||
sk->sk_peek_off = val;
|
||||
WRITE_ONCE(sk->sk_peek_off, val);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sk_set_peek_off);
|
||||
|
@ -779,7 +779,7 @@ static int unix_set_peek_off(struct sock *sk, int val)
|
||||
if (mutex_lock_interruptible(&u->iolock))
|
||||
return -EINTR;
|
||||
|
||||
sk->sk_peek_off = val;
|
||||
WRITE_ONCE(sk->sk_peek_off, val);
|
||||
mutex_unlock(&u->iolock);
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user