[dpdk-dev] pdump: fix possible mbuf leak

Message ID 20171110135516.23996-1-matvejchikov@gmail.com (mailing list archive)
State Accepted, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Ilya Matveychikov Nov. 10, 2017, 1:55 p.m. UTC
  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")
Cc: reshma.pattan@intel.com

Signed-off-by: Ilya V. Matveychikov <matvejchikov@gmail.com>
---
 lib/librte_pdump/rte_pdump.c | 2 ++
 1 file changed, 2 insertions(+)
  

Comments

Thomas Monjalon Nov. 12, 2017, 3:13 a.m. UTC | #1
10/11/2017 14:55, Ilya V. Matveychikov:
> 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")
> Cc: reshma.pattan@intel.com
> 
> Signed-off-by: Ilya V. Matveychikov <matvejchikov@gmail.com>

Applied, thanks
  

Patch

diff --git a/lib/librte_pdump/rte_pdump.c b/lib/librte_pdump/rte_pdump.c
index e6182d35c..fec49b525 100644
--- a/lib/librte_pdump/rte_pdump.c
+++ b/lib/librte_pdump/rte_pdump.c
@@ -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;
 		}