From: YueHaibing <[email protected]> Date: Mon, 24 Jun 2019 11:49:13 +0800
> @@ -998,6 +998,9 @@ bool __skb_flow_dissect(const struct net *net,
> skb && skb_vlan_tag_present(skb)) {
> proto = skb->protocol;
> } else {
> + if (dissector_vlan == FLOW_DISSECTOR_KEY_MAX)
> + nhoff -= sizeof(*vlan);
> +
But this is wrong when we are being called via eth_get_headlen(), in
that case nhoff will be sizeof(struct ethhdr).

