diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index ec39edfbf41e89cfd4555fec5fcd2d7cbbc62225..054cde38ebc88c258c71253546bb4e82a742475c 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -1908,7 +1908,7 @@ static inline void __skb_insert(struct sk_buff *newsk, WRITE_ONCE(newsk->prev, prev); WRITE_ONCE(next->prev, newsk); WRITE_ONCE(prev->next, newsk); - list->qlen++; + WRITE_ONCE(list->qlen, list->qlen + 1); } static inline void __skb_queue_splice(const struct sk_buff_head *list, diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 37ffa7725cee2ede28bb2f2b3c484f6008a25dca..d5c0ae34b1e457f17115dbc4b2a5468feacac667 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -2769,7 +2769,7 @@ static __poll_t unix_dgram_poll(struct file *file, struct socket *sock, other = unix_peer(sk); if (other && unix_peer(other) != sk && - unix_recvq_full(other) && + unix_recvq_full_lockless(other) && unix_dgram_peer_wake_me(sk, other)) writable = 0;