port: fix mbuf allocation in source port
authorFan Zhang <roy.fan.zhang@intel.com>
Mon, 30 Nov 2015 20:41:09 +0000 (20:41 +0000)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Mon, 7 Dec 2015 00:03:13 +0000 (01:03 +0100)
Fixes the mbuf allocation not initialized problem. This problem will cause
the mbufs not be able to freed back to mempool by rte_pktmbuf_free().

Fixes: ef3403fb6f9a ("port: source and sink")

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
lib/librte_port/rte_port_source_sink.c

index 234ab18..5e10144 100644 (file)
@@ -105,10 +105,16 @@ static int
 rte_port_source_rx(void *port, struct rte_mbuf **pkts, uint32_t n_pkts)
 {
        struct rte_port_source *p = (struct rte_port_source *) port;
+       uint32_t i;
 
        if (rte_mempool_get_bulk(p->mempool, (void **) pkts, n_pkts) != 0)
                return 0;
 
+       for (i = 0; i < n_pkts; i++) {
+               rte_mbuf_refcnt_set(pkts[i], 1);
+               rte_pktmbuf_reset(pkts[i]);
+       }
+
        RTE_PORT_SOURCE_STATS_PKTS_IN_ADD(p, n_pkts);
 
        return n_pkts;