pdump: fix possible mbuf leak on failure
authorIlya V. Matveychikov <matvejchikov@gmail.com>
Fri, 10 Nov 2017 13:55:16 +0000 (16:55 +0300)
committerThomas Monjalon <thomas@monjalon.net>
Sun, 12 Nov 2017 03:15:54 +0000 (04:15 +0100)
If pdump_pktmbuf_copy_data() fails it's possible to have segment leak
as rte_pktmbuf_free() only handles m_dup chain but not the seg just
allocated and yet not chained.

Fixes: 278f945402c5 ("pdump: add new library for packet capture")

Signed-off-by: Ilya V. Matveychikov <matvejchikov@gmail.com>
lib/librte_pdump/rte_pdump.c

index e6182d3..fec49b5 100644 (file)
@@ -153,6 +153,8 @@ pdump_pktmbuf_copy(struct rte_mbuf *m, struct rte_mempool *mp)
        do {
                nseg++;
                if (pdump_pktmbuf_copy_data(seg, m) < 0) {
+                       if (seg != m_dup)
+                               rte_pktmbuf_free_seg(seg);
                        rte_pktmbuf_free(m_dup);
                        return NULL;
                }