net: dropreason: add SKB_DROP_REASON_RECURSION_LIMIT
ip[6]tunnel_xmit() can drop packets if a too deep recursion level is detected. Add SKB_DROP_REASON_RECURSION_LIMIT drop reason. We will use this reason later in __dev_queue_xmit(). Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: Joe Damato <joe@dama.to> Link: https://patch.msgid.link/20260312201824.203093-2-edumazet@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>master
parent
b58e3a2d01
commit
d15d3de94a
|
|
@ -123,6 +123,7 @@
|
|||
FN(PFMEMALLOC) \
|
||||
FN(PSP_INPUT) \
|
||||
FN(PSP_OUTPUT) \
|
||||
FN(RECURSION_LIMIT) \
|
||||
FNe(MAX)
|
||||
|
||||
/**
|
||||
|
|
@ -582,6 +583,8 @@ enum skb_drop_reason {
|
|||
SKB_DROP_REASON_PSP_INPUT,
|
||||
/** @SKB_DROP_REASON_PSP_OUTPUT: PSP output checks failed */
|
||||
SKB_DROP_REASON_PSP_OUTPUT,
|
||||
/** @SKB_DROP_REASON_RECURSION_LIMIT: Dead loop on virtual device. */
|
||||
SKB_DROP_REASON_RECURSION_LIMIT,
|
||||
/**
|
||||
* @SKB_DROP_REASON_MAX: the maximum of core drop reasons, which
|
||||
* shouldn't be used as a real 'reason' - only for tracing code gen
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@ static inline void ip6tunnel_xmit(struct sock *sk, struct sk_buff *skb,
|
|||
dev->name);
|
||||
DEV_STATS_INC(dev, tx_errors);
|
||||
}
|
||||
kfree_skb(skb);
|
||||
kfree_skb_reason(skb, SKB_DROP_REASON_RECURSION_LIMIT);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ void iptunnel_xmit(struct sock *sk, struct rtable *rt, struct sk_buff *skb,
|
|||
DEV_STATS_INC(dev, tx_errors);
|
||||
}
|
||||
ip_rt_put(rt);
|
||||
kfree_skb(skb);
|
||||
kfree_skb_reason(skb, SKB_DROP_REASON_RECURSION_LIMIT);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue