--- x/net/core/skmsg.c +++ y/net/core/skmsg.c @@ -417,7 +417,9 @@ int sk_msg_recvmsg(struct sock *sk, stru int peek = flags & MSG_PEEK; struct sk_msg *msg_rx; int i, copied = 0; + static DEFINE_MUTEX(lk); + mutex_lock(&lk); msg_rx = sk_psock_peek_msg(psock); while (copied != len) { struct scatterlist *sge; @@ -485,6 +487,7 @@ int sk_msg_recvmsg(struct sock *sk, stru msg_rx = sk_psock_peek_msg(psock); } out: + mutex_unlock(&lk); return copied; } EXPORT_SYMBOL_GPL(sk_msg_recvmsg);