[PATCH v2 net 0/2] Fix wrong transport_header when sending VLAN-tagged frames

From: wei . fang

Date: Fri Aug 07 2026 - 02:30:53 EST


From: Wei Fang <wei.fang@xxxxxxx>

When sending a VLAN-tagged frame via AF_PACKET or tap, calling
skb_set_network_header() before skb_probe_transport_header() causes
the flow dissector to misinterpret the inner protocol header as a
VLAN header. As a result, transport_header is never set and remains
at its uninitialized sentinel value (~0U).

Move skb_probe_transport_header() to before skb_set_network_header()
so the flow dissector sees network_header still pointing to the VLAN
header and can correctly identify the transport layer.

---
v2 changes:
1. Move skb_probe_transport_header() to before skb_set_network_header()
2. Change the commit messages and titles
v1 link: https://lore.kernel.org/imx/20260805105314.3882595-1-wei.fang@xxxxxxxxxxx/
---

Wei Fang (2):
net: packet: fix wrong transport_header when sending VLAN-tagged frame
net: tap: fix wrong transport_header when sending VLAN-tagged frame

drivers/net/tap.c | 3 ++-
net/packet/af_packet.c | 4 ++--
2 files changed, 4 insertions(+), 3 deletions(-)

--
2.34.1