if (unlikely(flags & MSG_ERRQUEUE))
                return inet_recv_error(sk, msg, len, addr_len);
 
+       if (sk_can_busy_loop(sk) &&
+           skb_queue_empty_lockless(&sk->sk_receive_queue))
+               sk_busy_loop(sk, flags & MSG_DONTWAIT);
+
        lock_sock(sk);
 
        if (sctp_style(sk, TCP) && !sctp_sstate(sk, ESTABLISHED) &&
                if (sk->sk_shutdown & RCV_SHUTDOWN)
                        break;
 
-               if (sk_can_busy_loop(sk)) {
-                       sk_busy_loop(sk, flags & MSG_DONTWAIT);
-
-                       if (!skb_queue_empty_lockless(&sk->sk_receive_queue))
-                               continue;
-               }
 
                /* User doesn't want to wait.  */
                error = -EAGAIN;