struct sk_msg *msg, u32 bytes);
 int sk_msg_memcopy_from_iter(struct sock *sk, struct iov_iter *from,
                             struct sk_msg *msg, u32 bytes);
-int sk_msg_wait_data(struct sock *sk, struct sk_psock *psock, int flags,
-                    long timeo, int *err);
+int sk_msg_wait_data(struct sock *sk, struct sk_psock *psock, long timeo);
 int sk_msg_recvmsg(struct sock *sk, struct sk_psock *psock, struct msghdr *msg,
                   int len, int flags);
 
 
 }
 EXPORT_SYMBOL_GPL(sk_msg_memcopy_from_iter);
 
-int sk_msg_wait_data(struct sock *sk, struct sk_psock *psock, int flags,
-                    long timeo, int *err)
+int sk_msg_wait_data(struct sock *sk, struct sk_psock *psock, long timeo)
 {
        DEFINE_WAIT_FUNC(wait, woken_wake_function);
        int ret = 0;
 
 msg_bytes_ready:
        copied = sk_msg_recvmsg(sk, psock, msg, len, flags);
        if (!copied) {
-               int data, err = 0;
                long timeo;
+               int data;
 
                timeo = sock_rcvtimeo(sk, nonblock);
-               data = sk_msg_wait_data(sk, psock, flags, timeo, &err);
+               data = sk_msg_wait_data(sk, psock, timeo);
                if (data) {
                        if (!sk_psock_queue_empty(psock))
                                goto msg_bytes_ready;
                        sk_psock_put(sk, psock);
                        return tcp_recvmsg(sk, msg, len, nonblock, flags, addr_len);
                }
-               if (err) {
-                       ret = err;
-                       goto out;
-               }
                copied = -EAGAIN;
        }
        ret = copied;
-out:
        release_sock(sk);
        sk_psock_put(sk, psock);
        return ret;
 
 msg_bytes_ready:
        copied = sk_msg_recvmsg(sk, psock, msg, len, flags);
        if (!copied) {
-               int data, err = 0;
                long timeo;
+               int data;
 
                timeo = sock_rcvtimeo(sk, nonblock);
-               data = sk_msg_wait_data(sk, psock, flags, timeo, &err);
+               data = sk_msg_wait_data(sk, psock, timeo);
                if (data) {
                        if (!sk_psock_queue_empty(psock))
                                goto msg_bytes_ready;
                        ret = sk_udp_recvmsg(sk, msg, len, nonblock, flags, addr_len);
                        goto out;
                }
-               if (err) {
-                       ret = err;
-                       goto out;
-               }
                copied = -EAGAIN;
        }
        ret = copied;