[dpdk-dev] [PATCH] examples/vhost: fix memory leak on forwarding packets.

Wenwu Ma wenwux.ma at intel.com
Tue Aug 17 19:13:20 CEST 2021


In function virtio_tx_local(), when the device receiving the packet
is the same as the device to which the packet is forwarded,
or the device is removed, we return but not free the packet,
it will cause a memory leak.

Fixes: 4796ad63ba1f ("examples/vhost: import userspace vhost application")
Cc: stable at dpdk.org

Signed-off-by: Wenwu Ma <wenwux.ma at intel.com>
---
 examples/vhost/main.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/examples/vhost/main.c b/examples/vhost/main.c
index bc3d71c898..07fd90ec64 100644
--- a/examples/vhost/main.c
+++ b/examples/vhost/main.c
@@ -965,6 +965,7 @@ virtio_tx_local(struct vhost_dev *vdev, struct rte_mbuf *m)
 		return -1;
 
 	if (vdev->vid == dst_vdev->vid) {
+		rte_pktmbuf_free(m);
 		RTE_LOG_DP(DEBUG, VHOST_DATA,
 			"(%d) TX: src and dst MAC is same. Dropping packet.\n",
 			vdev->vid);
@@ -975,6 +976,7 @@ virtio_tx_local(struct vhost_dev *vdev, struct rte_mbuf *m)
 		"(%d) TX: MAC address is local\n", dst_vdev->vid);
 
 	if (unlikely(dst_vdev->remove)) {
+		rte_pktmbuf_free(m);
 		RTE_LOG_DP(DEBUG, VHOST_DATA,
 			"(%d) device is marked for removal\n", dst_vdev->vid);
 		return 0;
-- 
2.25.1



More information about the dev mailing list