graph: fix memory leak in node clone

Message ID 20241030121247.1400-1-pbhagavatula@marvell.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series graph: fix memory leak in node clone |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/github-robot: build success github build: passed
ci/intel-Functional success Functional PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-marvell-Functional success Functional Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-unit-arm64-testing success Testing PASS
ci/iol-compile-arm64-testing success Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-unit-amd64-testing success Testing PASS
ci/iol-compile-amd64-testing success Testing PASS
ci/iol-sample-apps-testing success Testing PASS

Commit Message

Pavan Nikhilesh Bhagavatula Oct. 30, 2024, 12:12 p.m. UTC
From: Pavan Nikhilesh <pbhagavatula@marvell.com>

Free memory allocated for the node when xstats memory
allocation fails.

Coverity issue: 445529
Fixes: 070db97e017b ("graph: support node xstats")

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
---
 lib/graph/node.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Huichao Cai Nov. 1, 2024, 1:27 a.m. UTC | #1
There is one more place in the node_clone function that needs to be modified:
       if (clone_name(reg->name, node->name, name))
                //goto free;
                goto free_xstat;
  

Patch

diff --git a/lib/graph/node.c b/lib/graph/node.c
index f15922892e..eb685b409f 100644
--- a/lib/graph/node.c
+++ b/lib/graph/node.c
@@ -156,7 +156,7 @@  node_clone(struct node *node, const char *name)
 				     (node->xstats->nb_xstats * RTE_NODE_XSTAT_DESC_SIZE));
 		if (reg->xstats == NULL) {
 			rte_errno = ENOMEM;
-			goto fail;
+			goto free;
 		}
 
 		for (i = 0; i < node->xstats->nb_xstats; i++)