Commit 48533eca authored by Eric Dumazet's avatar Eric Dumazet Committed by Jakub Kicinski
Browse files

net: sock_dequeue_err_skb() optimization



Exit early if the list is empty.

Some applications using TCP zerocopy are calling
recvmsg( ... MSG_ERRQUEUE) and hit this case quite often,
probably because busy polling only deals with sk_receive_queue.

Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Link: https://lore.kernel.org/r/20231005114504.642589-1-edumazet@google.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent a1fb841f
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -5162,6 +5162,9 @@ struct sk_buff *sock_dequeue_err_skb(struct sock *sk)
	bool icmp_next = false;
	unsigned long flags;

	if (skb_queue_empty_lockless(q))
		return NULL;

	spin_lock_irqsave(&q->lock, flags);
	skb = __skb_dequeue(q);
	if (skb && (skb_next = skb_peek(q))) {