[dpdk-dev] [PATCH v2 7/8] ipc: fix net/mlx4 memleak

Herakliusz Lipiec herakliusz.lipiec at intel.com
Tue Apr 23 19:43:33 CEST 2019


When sending synchronous IPC requests, the caller must free the response 
buffer even if the request returned failure. Fix the code to correctly 
use the IPC API.

Bugzilla ID:228
Fixes: 0b259b8e9655 ("net/mlx4: enable secondary process to register DMA memory")
Cc: yskoh at mellanox.com
Signed-off-by: Herakliusz Lipiec <herakliusz.lipiec at intel.com>
---
 drivers/net/mlx4/mlx4_mp.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/mlx4/mlx4_mp.c b/drivers/net/mlx4/mlx4_mp.c
index 183622453..f4cff7486 100644
--- a/drivers/net/mlx4/mlx4_mp.c
+++ b/drivers/net/mlx4/mlx4_mp.c
@@ -255,6 +255,7 @@ mlx4_mp_req_mr_create(struct rte_eth_dev *dev, uintptr_t addr)
 	if (ret) {
 		ERROR("port %u request to primary process failed",
 		      dev->data->port_id);
+		free(mp_rep.msgs);
 		return -rte_errno;
 	}
 	assert(mp_rep.nb_received == 1);
@@ -292,7 +293,8 @@ mlx4_mp_req_verbs_cmd_fd(struct rte_eth_dev *dev)
 	if (ret) {
 		ERROR("port %u request to primary process failed",
 		      dev->data->port_id);
-		return -rte_errno;
+		ret = -rte_errno;
+		goto exit;
 	}
 	assert(mp_rep.nb_received == 1);
 	mp_res = &mp_rep.msgs[0];
-- 
2.17.2



More information about the dev mailing list