diff --git a/net/core/filter.c b/net/core/filter.c index ad93b769b529..23f2207814ac 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -2836,8 +2836,9 @@ static int bpf_skb_net_shrink(struct sk_buff *skb, u32 len_diff) static u32 __bpf_skb_max_len(const struct sk_buff *skb) { - return skb->dev ? skb->dev->mtu + skb->dev->hard_header_len : - SKB_MAX_ALLOC; + if (skb_at_tc_ingress(skb) || !skb->dev) + return SKB_MAX_ALLOC; + return skb->dev->mtu + skb->dev->hard_header_len; } static int bpf_skb_adjust_net(struct sk_buff *skb, s32 len_diff)