Commit 9aaec660 authored by Eric Dumazet's avatar Eric Dumazet Committed by Paolo Abeni
Browse files

udp: refine __udp_enqueue_schedule_skb() test



Commit 5a465a0d ("udp: Fix multiple wraparounds
of sk->sk_rmem_alloc.") allowed to slightly overshoot
sk->sk_rmem_alloc, when many cpus are trying
to feed packets to a common UDP socket.

This patch, combined with the following one reduces
false sharing on the victim socket under DDOS.

Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
Reviewed-by: default avatarKuniyuki Iwashima <kuniyu@google.com>
Reviewed-by: default avatarWillem de Bruijn <willemb@google.com>
Link: https://patch.msgid.link/20250916160951.541279-6-edumazet@google.com


Reviewed-by: default avatarJakub Kicinski <kuba@kernel.org>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent b76543b2
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1739,8 +1739,8 @@ int __udp_enqueue_schedule_skb(struct sock *sk, struct sk_buff *skb)
		if (rcvbuf > INT_MAX >> 1)
			goto drop;

		/* Always allow at least one packet for small buffer. */
		if (rmem > rcvbuf)
		/* Accept the packet if queue is empty. */
		if (rmem)
			goto drop;
	}