The ready buffers should be set to NULL when drained else it might result
in double free (mempool put) when rte_reorder_free is called.

Fixes: b70b56032bff ("reorder: new library")

Signed-off-by: Pavan Nikhilesh <pbhagavat...@caviumnetworks.com>
---
 lib/librte_reorder/rte_reorder.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/librte_reorder/rte_reorder.c b/lib/librte_reorder/rte_reorder.c
index 010dff6..302eba6 100644
--- a/lib/librte_reorder/rte_reorder.c
+++ b/lib/librte_reorder/rte_reorder.c
@@ -392,6 +392,7 @@ rte_reorder_drain(struct rte_reorder_buffer *b, struct 
rte_mbuf **mbufs,
        /* Try to fetch requested number of mbufs from ready buffer */
        while ((drain_cnt < max_mbufs) && (ready_buf->tail != ready_buf->head)) 
{
                mbufs[drain_cnt++] = ready_buf->entries[ready_buf->tail];
+               ready_buf->entries[ready_buf->tail] = NULL;
                ready_buf->tail = (ready_buf->tail + 1) & ready_buf->mask;
        }
 
-- 
2.7.4

Reply via email to