projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
5d9b7cb
)
ipv6: raw: check sk->sk_rcvbuf earlier
author
Eric Dumazet
<edumazet@google.com>
Thu, 7 Mar 2024 16:29:43 +0000
(16:29 +0000)
committer
Jakub Kicinski
<kuba@kernel.org>
Fri, 8 Mar 2024 19:39:29 +0000
(11:39 -0800)
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/20240307162943.2523817-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv6/raw.c
patch
|
blob
|
history
diff --git
a/net/ipv6/raw.c
b/net/ipv6/raw.c
index 779274055abf99530048ad4738c2263e97c94cce..ca49e6617afaff3fe6c5f3a174bbe6d96f94ac62 100644
(file)
--- a/
net/ipv6/raw.c
+++ b/
net/ipv6/raw.c
@@
-160,6
+160,13
@@
static bool ipv6_raw_deliver(struct sk_buff *skb, int nexthdr)
if (!raw_v6_match(net, sk, nexthdr, daddr, saddr,
inet6_iif(skb), inet6_sdif(skb)))
continue;
+
+ if (atomic_read(&sk->sk_rmem_alloc) >=
+ READ_ONCE(sk->sk_rcvbuf)) {
+ atomic_inc(&sk->sk_drops);
+ continue;
+ }
+
delivered = true;
switch (nexthdr) {
case IPPROTO_ICMPV6: