Skip to content

Commit ac3ad19

Browse files
edumazetdavem330
authored andcommitted
net: fix __dev_kfree_skb_any() vs drop monitor
dev_kfree_skb() is aliased to consume_skb(). When a driver is dropping a packet by calling dev_kfree_skb_any() we should propagate the drop reason instead of pretending the packet was consumed. Note: Now we have enum skb_drop_reason we could remove enum skb_free_reason (for linux-6.4) v2: added an unlikely(), suggested by Yunsheng Lin. Fixes: e624702 ("net: introduce dev_consume_skb_any()") Signed-off-by: Eric Dumazet <[email protected]> Cc: Yunsheng Lin <[email protected]> Reviewed-by: Yunsheng Lin <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 1862de9 commit ac3ad19

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

net/core/dev.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3134,8 +3134,10 @@ void __dev_kfree_skb_any(struct sk_buff *skb, enum skb_free_reason reason)
31343134
{
31353135
if (in_hardirq() || irqs_disabled())
31363136
__dev_kfree_skb_irq(skb, reason);
3137+
else if (unlikely(reason == SKB_REASON_DROPPED))
3138+
kfree_skb(skb);
31373139
else
3138-
dev_kfree_skb(skb);
3140+
consume_skb(skb);
31393141
}
31403142
EXPORT_SYMBOL(__dev_kfree_skb_any);
31413143

0 commit comments

Comments
 (0)