aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/tcp.c')
-rw-r--r--net/ipv4/tcp.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 4a044964da66..0efb4c7f6704 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -770,6 +770,12 @@ ssize_t tcp_splice_read(struct socket *sock, loff_t *ppos,
770 ret = -EAGAIN; 770 ret = -EAGAIN;
771 break; 771 break;
772 } 772 }
773 /* if __tcp_splice_read() got nothing while we have
774 * an skb in receive queue, we do not want to loop.
775 * This might happen with URG data.
776 */
777 if (!skb_queue_empty(&sk->sk_receive_queue))
778 break;
773 sk_wait_data(sk, &timeo, NULL); 779 sk_wait_data(sk, &timeo, NULL);
774 if (signal_pending(current)) { 780 if (signal_pending(current)) {
775 ret = sock_intr_errno(timeo); 781 ret = sock_intr_errno(timeo);