summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvi Weiss <thnkslprpt@gmail.com>2026-10-31 13:41:35 +0200
committerPaolo Abeni <pabeni@redhat.com>2026-11-04 15:21:07 +0100
commit24614e72df484ad50ecba98aaa88c7df2448c122 (patch)
treef9e31a312e979483740ed35d2e31da1e6716bf12
parentc4328134f3f7c2ce141121a8f82a5ec0cc8a709c (diff)
net: skbuff: reject zero MPLS TTL before decrementing
skb_mpls_dec_ttl() decrements the u8 TTL before checking whether it expired. An incoming TTL of zero wraps to 255, causing the TC MPLS dec_ttl action to pass an expired packet instead of dropping it. Reject a zero TTL before the decrement while preserving the existing behavior for TTL one and valid TTL values. Fixes: 2a2ea50870ba ("net: sched: add mpls manipulation actions to TC") Signed-off-by: Avi Weiss <thnkslprpt@gmail.com> Reviewed-by: Xia Yan <yanxia@cmss.chinamobile.com> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/20261031114135.3784868-2-thnkslprpt@gmail.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
-rw-r--r--net/core/skbuff.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 68192e477ff1..8da53d5b76fc 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -6858,7 +6858,7 @@ int skb_mpls_dec_ttl(struct sk_buff *skb)
lse = be32_to_cpu(mpls_hdr(skb)->label_stack_entry);
ttl = (lse & MPLS_LS_TTL_MASK) >> MPLS_LS_TTL_SHIFT;
- if (!--ttl)
+ if (!ttl || !--ttl)
return -EINVAL;
lse &= ~MPLS_LS_TTL_MASK;