net: fix inner L2 length in packet type parser
authorOlivier Matz <olivier.matz@6wind.com>
Mon, 11 Sep 2017 14:57:22 +0000 (16:57 +0200)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 5 Oct 2017 21:34:45 +0000 (23:34 +0200)
The inner L2 length returned by rte_net_get_ptype() is not
properly initialized. If the caller does not zero the header
lengths structure, the inner_l2 field will be undefined.

Fix it by initializing inner_l2 to 0 when parsing a inner layer.

Fixes: 2c15c5377da2 ("net: support NVGRE in software packet type parser")
Cc: stable@dpdk.org
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
lib/librte_net/rte_net.c

index a8c7aff..a3ca040 100644 (file)
@@ -396,6 +396,7 @@ uint32_t rte_net_get_ptype(const struct rte_mbuf *m,
        if ((layers & RTE_PTYPE_INNER_L2_MASK) == 0)
                return pkt_type;
 
+       hdr_lens->inner_l2_len = 0;
        if (proto == rte_cpu_to_be_16(ETHER_TYPE_TEB)) {
                eh = rte_pktmbuf_read(m, off, sizeof(*eh), &eh_copy);
                if (unlikely(eh == NULL))