]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - net/core/datagram.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[karo-tx-linux.git] / net / core / datagram.c
index f4947e737f34a0d5dafb2e8232260f46a43fbc27..15ef99469cfe2b86032abfbbbcaf51b96a229044 100644 (file)
@@ -256,8 +256,12 @@ struct sk_buff *__skb_try_recv_datagram(struct sock *sk, unsigned int flags,
                }
 
                spin_unlock_irqrestore(&queue->lock, cpu_flags);
-       } while (sk_can_busy_loop(sk) &&
-                sk_busy_loop(sk, flags & MSG_DONTWAIT));
+
+               if (!sk_can_busy_loop(sk))
+                       break;
+
+               sk_busy_loop(sk, flags & MSG_DONTWAIT);
+       } while (!skb_queue_empty(&sk->sk_receive_queue));
 
        error = -EAGAIN;