--- x/net/core/skmsg.c +++ y/net/core/skmsg.c @@ -500,7 +500,13 @@ out: int sk_msg_recvmsg(struct sock *sk, struct sk_psock *psock, struct msghdr *msg, int len, int flags) { - return __sk_msg_recvmsg(sk, psock, msg, len, flags, NULL); + static DEFINE_MUTEX(lk); + int rc; + + mutex_lock(&lk); + rc = __sk_msg_recvmsg(sk, psock, msg, len, flags, NULL); + mutex_unlock(&lk); + return rc; } EXPORT_SYMBOL_GPL(sk_msg_recvmsg);