mirror of
https://github.com/torvalds/linux
synced 2024-09-06 18:01:05 +00:00
ipv4: raw: check sk->sk_rcvbuf earlier
There is no point cloning an skb and having to free the clone if the receive queue of the raw socket is full. Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: Willem de Bruijn <willemb@google.com> Link: https://lore.kernel.org/r/20240307163020.2524409-1-edumazet@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
026763ece8
commit
d721812aa8
|
@ -175,6 +175,13 @@ static int raw_v4_input(struct net *net, struct sk_buff *skb,
|
|||
if (!raw_v4_match(net, sk, iph->protocol,
|
||||
iph->saddr, iph->daddr, dif, sdif))
|
||||
continue;
|
||||
|
||||
if (atomic_read(&sk->sk_rmem_alloc) >=
|
||||
READ_ONCE(sk->sk_rcvbuf)) {
|
||||
atomic_inc(&sk->sk_drops);
|
||||
continue;
|
||||
}
|
||||
|
||||
delivered = 1;
|
||||
if ((iph->protocol != IPPROTO_ICMP || !icmp_filter(sk, skb)) &&
|
||||
ip_mc_sf_allow(sk, iph->daddr, iph->saddr,
|
||||
|
|
Loading…
Reference in a new issue