diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv4/udp.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 14bc654b6842..2cc259736c2e 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
@@ -1577,7 +1577,7 @@ static int first_packet_length(struct sock *sk) | |||
1577 | 1577 | ||
1578 | spin_lock_bh(&rcvq->lock); | 1578 | spin_lock_bh(&rcvq->lock); |
1579 | skb = __first_packet_length(sk, rcvq, &total); | 1579 | skb = __first_packet_length(sk, rcvq, &total); |
1580 | if (!skb && !skb_queue_empty(sk_queue)) { | 1580 | if (!skb && !skb_queue_empty_lockless(sk_queue)) { |
1581 | spin_lock(&sk_queue->lock); | 1581 | spin_lock(&sk_queue->lock); |
1582 | skb_queue_splice_tail_init(sk_queue, rcvq); | 1582 | skb_queue_splice_tail_init(sk_queue, rcvq); |
1583 | spin_unlock(&sk_queue->lock); | 1583 | spin_unlock(&sk_queue->lock); |
@@ -1650,7 +1650,7 @@ struct sk_buff *__skb_recv_udp(struct sock *sk, unsigned int flags, | |||
1650 | return skb; | 1650 | return skb; |
1651 | } | 1651 | } |
1652 | 1652 | ||
1653 | if (skb_queue_empty(sk_queue)) { | 1653 | if (skb_queue_empty_lockless(sk_queue)) { |
1654 | spin_unlock_bh(&queue->lock); | 1654 | spin_unlock_bh(&queue->lock); |
1655 | goto busy_check; | 1655 | goto busy_check; |
1656 | } | 1656 | } |
@@ -1676,7 +1676,7 @@ busy_check: | |||
1676 | break; | 1676 | break; |
1677 | 1677 | ||
1678 | sk_busy_loop(sk, flags & MSG_DONTWAIT); | 1678 | sk_busy_loop(sk, flags & MSG_DONTWAIT); |
1679 | } while (!skb_queue_empty(sk_queue)); | 1679 | } while (!skb_queue_empty_lockless(sk_queue)); |
1680 | 1680 | ||
1681 | /* sk_queue is empty, reader_queue may contain peeked packets */ | 1681 | /* sk_queue is empty, reader_queue may contain peeked packets */ |
1682 | } while (timeo && | 1682 | } while (timeo && |