net: annotate lockless accesses to sk->sk_ack_backlog
sk->sk_ack_backlog can be read without any lock being held. We need to use READ_ONCE()/WRITE_ONCE() to avoid load/store tearing and/or potential KCSAN warnings. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
7976a11b30
commit
288efe8606
@@ -859,17 +859,17 @@ static inline gfp_t sk_gfp_mask(const struct sock *sk, gfp_t gfp_mask)
|
||||
|
||||
static inline void sk_acceptq_removed(struct sock *sk)
|
||||
{
|
||||
sk->sk_ack_backlog--;
|
||||
WRITE_ONCE(sk->sk_ack_backlog, sk->sk_ack_backlog - 1);
|
||||
}
|
||||
|
||||
static inline void sk_acceptq_added(struct sock *sk)
|
||||
{
|
||||
sk->sk_ack_backlog++;
|
||||
WRITE_ONCE(sk->sk_ack_backlog, sk->sk_ack_backlog + 1);
|
||||
}
|
||||
|
||||
static inline bool sk_acceptq_is_full(const struct sock *sk)
|
||||
{
|
||||
return sk->sk_ack_backlog > sk->sk_max_ack_backlog;
|
||||
return READ_ONCE(sk->sk_ack_backlog) > sk->sk_max_ack_backlog;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user