Clear skb->cb state in etherip6_xmit to prevent IPv6 fragmentation issues

This commit is contained in:
tuna2134
2026-07-06 22:44:06 +09:00
parent 5bb4e290a3
commit bbf52550be

View File

@@ -309,6 +309,15 @@ static netdev_tx_t etherip6_xmit(struct sk_buff *skb, struct net_device *dev)
skb->ignore_df = 1; skb->ignore_df = 1;
skb_dst_set(skb, dst); skb_dst_set(skb, dst);
/*
* skb->cb belongs to the protocol currently processing the skb. The
* encapsulated frame may leave bridge, qdisc, or inner IPv6 state in it;
* in particular, stale inet6_skb_parm flags or frag_max_size corrupt the
* outer IPv6 fragmentation path. Native IPv6 tunnels clear this state
* in ip6tunnel_xmit() before calling ip6_local_out().
*/
memset(skb->cb, 0, sizeof(struct inet6_skb_parm));
stats = this_cpu_ptr(tun->stats); stats = this_cpu_ptr(tun->stats);
u64_stats_update_begin(&stats->syncp); u64_stats_update_begin(&stats->syncp);
u64_stats_inc(&stats->tx_packets); u64_stats_inc(&stats->tx_packets);