Re: [PATCH v2] flow_dissector: Fix vlan header offset in __skb_flow_dissect

From: David Miller
Date: Wed Jun 26 2019 - 22:28:59 EST


From: YueHaibing <yuehaibing@xxxxxxxxxx>
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).