Message ID | tencent_5A50BC27A519EBD14E1B0A8685E89405850A@qq.com (mailing list archive) |
---|---|
State | Accepted |
Commit | c2deb2e971f5d9aca941ef13ee05566979e337a4 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [v2] net: mark racy access on sk->sk_rcvbuf | expand |
On Thu, Mar 21, 2024 at 9:44 AM linke li <lilinke99@qq.com> wrote: > > sk->sk_rcvbuf in __sock_queue_rcv_skb() and __sk_receive_skb() can be > changed by other threads. Mark this as benign using READ_ONCE(). > > This patch is aimed at reducing the number of benign races reported by > KCSAN in order to focus future debugging effort on harmful races. > > Signed-off-by: linke li <lilinke99@qq.com> > --- > v1 -> v2: include sk->sk_rcvbuf in __sock_queue_rcv_skb() Reviewed-by: Eric Dumazet <edumazet@google.com>
Hello: This patch was applied to netdev/net.git (main) by David S. Miller <davem@davemloft.net>: On Thu, 21 Mar 2024 16:44:10 +0800 you wrote: > sk->sk_rcvbuf in __sock_queue_rcv_skb() and __sk_receive_skb() can be > changed by other threads. Mark this as benign using READ_ONCE(). > > This patch is aimed at reducing the number of benign races reported by > KCSAN in order to focus future debugging effort on harmful races. > > Signed-off-by: linke li <lilinke99@qq.com> > > [...] Here is the summary with links: - [v2] net: mark racy access on sk->sk_rcvbuf https://git.kernel.org/netdev/net/c/c2deb2e971f5 You are awesome, thank you!
diff --git a/net/core/sock.c b/net/core/sock.c index 5e78798456fd..61c14623a218 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -481,7 +481,7 @@ int __sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) unsigned long flags; struct sk_buff_head *list = &sk->sk_receive_queue; - if (atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf) { + if (atomic_read(&sk->sk_rmem_alloc) >= READ_ONCE(sk->sk_rcvbuf)) { atomic_inc(&sk->sk_drops); trace_sock_rcvqueue_full(sk, skb); return -ENOMEM; @@ -551,7 +551,7 @@ int __sk_receive_skb(struct sock *sk, struct sk_buff *skb, skb->dev = NULL; - if (sk_rcvqueues_full(sk, sk->sk_rcvbuf)) { + if (sk_rcvqueues_full(sk, READ_ONCE(sk->sk_rcvbuf))) { atomic_inc(&sk->sk_drops); goto discard_and_relse; }
sk->sk_rcvbuf in __sock_queue_rcv_skb() and __sk_receive_skb() can be changed by other threads. Mark this as benign using READ_ONCE(). This patch is aimed at reducing the number of benign races reported by KCSAN in order to focus future debugging effort on harmful races. Signed-off-by: linke li <lilinke99@qq.com> --- v1 -> v2: include sk->sk_rcvbuf in __sock_queue_rcv_skb() net/core/sock.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)