Fix potential crash when shuffling mbufs 37/64337/1
authorXavier Simonart <xavier.simonart@intel.com>
Sun, 28 Oct 2018 14:54:28 +0000 (15:54 +0100)
committerDeepak S <deepak.s@linux.intel.com>
Wed, 31 Oct 2018 23:08:30 +0000 (04:38 +0530)
Change-Id: I70de6345afc6a696906f006c1b0f44540ae4ecec
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
VNFs/DPPD-PROX/main.c

index 2e1616a..ec1ecb5 100644 (file)
@@ -571,13 +571,14 @@ static void shuffle_mempool(struct rte_mempool* mempool, uint32_t nb_mbuf)
        struct rte_mbuf** pkts = prox_zmalloc(nb_mbuf * sizeof(*pkts), rte_socket_id());
        uint64_t got = 0;
 
-       while (rte_mempool_get_bulk(mempool, (void**)(pkts + got), 1) == 0)
+       while ((got < nb_mbuf) && (rte_mempool_get_bulk(mempool, (void**)(pkts + got), 1) == 0))
                ++got;
 
+       nb_mbuf = got;
        while (got) {
                int idx;
                do {
-                       idx = rand() % nb_mbuf - 1;
+                       idx = rand() % nb_mbuf;
                } while (pkts[idx] == 0);
 
                rte_mempool_put_bulk(mempool, (void**)&pkts[idx], 1);