mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
net: add missing data-race annotations around sk->sk_peek_off
[ Upstream commit11695c6e96] 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:
committed by
Greg Kroah-Hartman
parent
b53468041d
commit
dd7a1ff07c
@@ -1815,7 +1815,7 @@ int sk_getsockopt(struct sock *sk, int level, int optname,
|
|||||||
if (!sock->ops->set_peek_off)
|
if (!sock->ops->set_peek_off)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
v.val = sk->sk_peek_off;
|
v.val = READ_ONCE(sk->sk_peek_off);
|
||||||
break;
|
break;
|
||||||
case SO_NOFCS:
|
case SO_NOFCS:
|
||||||
v.val = sock_flag(sk, SOCK_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)
|
int sk_set_peek_off(struct sock *sk, int val)
|
||||||
{
|
{
|
||||||
sk->sk_peek_off = val;
|
WRITE_ONCE(sk->sk_peek_off, val);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(sk_set_peek_off);
|
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))
|
if (mutex_lock_interruptible(&u->iolock))
|
||||||
return -EINTR;
|
return -EINTR;
|
||||||
|
|
||||||
sk->sk_peek_off = val;
|
WRITE_ONCE(sk->sk_peek_off, val);
|
||||||
mutex_unlock(&u->iolock);
|
mutex_unlock(&u->iolock);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user