[v2,1/2] graph: fix memory leak
Checks
Commit Message
From: HongBo Zheng <zhenghongbo3@huawei.com>
Fix function 'stats_mem_populate' return without
free dynamic memory referenced by 'stats'.
Fixes: af1ae8b6a32c ("graph: implement stats")
Cc: stable@dpdk.org
Signed-off-by: HongBo Zheng <zhenghongbo3@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
lib/graph/graph_stats.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
Comments
On Thu, May 6, 2021 at 9:16 AM Min Hu (Connor) <humin29@huawei.com> wrote:
>
> From: HongBo Zheng <zhenghongbo3@huawei.com>
>
> Fix function 'stats_mem_populate' return without
> free dynamic memory referenced by 'stats'.
>
> Fixes: af1ae8b6a32c ("graph: implement stats")
> Cc: stable@dpdk.org
>
> Signed-off-by: HongBo Zheng <zhenghongbo3@huawei.com>
> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
@@ -165,6 +165,7 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
stats = realloc(stats, stats->sz + stats->cluster_node_size);
if (stats == NULL)
SET_ERR_JMP(ENOMEM, err, "Realloc failed");
+ *stats_in = NULL;
/* Clear the new struct cluster_node area */
cluster = RTE_PTR_ADD(stats, stats->sz),
@@ -174,7 +175,7 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
cluster->stat.hz = rte_get_timer_hz();
node = graph_node_id_to_ptr(graph, id);
if (node == NULL)
- SET_ERR_JMP(ENOENT, err, "Failed to find node %s in graph %s",
+ SET_ERR_JMP(ENOENT, free, "Failed to find node %s in graph %s",
graph_node->node->name, graph->name);
cluster->nodes[cluster->nb_nodes++] = node;
@@ -183,6 +184,8 @@ stats_mem_populate(struct rte_graph_cluster_stats **stats_in,
*stats_in = stats;
return 0;
+free:
+ free(stats);
err:
return -rte_errno;
}