static int unix_dgram_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
			      int flags)
{
	struct sock *sk = sock->sk;

#ifdef CONFIG_BPF_SYSCALL
	const struct proto *prot = READ_ONCE(sk->sk_prot);

	if (prot != &unix_dgram_proto)
		return prot->recvmsg(sk, msg, size, flags & MSG_DONTWAIT,
					    flags & ~MSG_DONTWAIT, NULL);
#endif
	return __unix_dgram_recvmsg(sk, msg, size, flags);
}
static int unix_dgram_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
			      int flags)
{
	struct sock *sk = sock->sk;

#ifdef CONFIG_BPF_SYSCALL
	const struct proto *prot = READ_ONCE(sk->sk_prot);

	if (prot != &unix_dgram_proto)
		return prot->recvmsg(sk, msg, size, flags & MSG_DONTWAIT,
					    flags & ~MSG_DONTWAIT, NULL);
#endif
	return __unix_dgram_recvmsg(sk, msg, size, flags);
}