[dpdk-dev] net/ark: fix kvargs memory leak

Message ID 20170428074311.31605-1-ferruh.yigit@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers

Checks

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

Commit Message

Ferruh Yigit April 28, 2017, 7:43 a.m. UTC
  Coverity issue: 1428042
Fixes: 1131cbf0fb2b ("net/ark: stub PMD for Atomic Rules Arkville")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
Please check next-net coverity project for more issues detected:
https://scan.coverity.com/projects/dpdk-next-net?tab=overview
---
 drivers/net/ark/ark_ethdev.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)
  

Comments

Thomas Monjalon May 1, 2017, 8:36 p.m. UTC | #1
28/04/2017 09:43, Ferruh Yigit:
> Coverity issue: 1428042
> Fixes: 1131cbf0fb2b ("net/ark: stub PMD for Atomic Rules Arkville")
> 
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>

Acked-by: John Miller <john.miller@atomicrules.com>

Applied, thanks
  

Patch

diff --git a/drivers/net/ark/ark_ethdev.c b/drivers/net/ark/ark_ethdev.c
index 4caad98..83961f5 100644
--- a/drivers/net/ark/ark_ethdev.c
+++ b/drivers/net/ark/ark_ethdev.c
@@ -922,6 +922,7 @@  eth_ark_check_args(struct ark_adapter *ark, const char *params)
 	struct rte_kvargs *kvlist;
 	unsigned int k_idx;
 	struct rte_kvargs_pair *pair = NULL;
+	int ret = -1;
 
 	kvlist = rte_kvargs_parse(params, valid_arguments);
 	if (kvlist == NULL)
@@ -942,7 +943,7 @@  eth_ark_check_args(struct ark_adapter *ark, const char *params)
 			       &process_pktdir_arg,
 			       ark) != 0) {
 		PMD_DRV_LOG(ERR, "Unable to parse arg %s\n", ARK_PKTDIR_ARG);
-		return -1;
+		goto free_kvlist;
 	}
 
 	if (rte_kvargs_process(kvlist,
@@ -950,7 +951,7 @@  eth_ark_check_args(struct ark_adapter *ark, const char *params)
 			       &process_file_args,
 			       ark->pkt_gen_args) != 0) {
 		PMD_DRV_LOG(ERR, "Unable to parse arg %s\n", ARK_PKTGEN_ARG);
-		return -1;
+		goto free_kvlist;
 	}
 
 	if (rte_kvargs_process(kvlist,
@@ -958,7 +959,7 @@  eth_ark_check_args(struct ark_adapter *ark, const char *params)
 			       &process_file_args,
 			       ark->pkt_chkr_args) != 0) {
 		PMD_DRV_LOG(ERR, "Unable to parse arg %s\n", ARK_PKTCHKR_ARG);
-		return -1;
+		goto free_kvlist;
 	}
 
 	PMD_DRV_LOG(INFO, "packet director set to 0x%x\n", ark->pkt_dir_v);
@@ -980,7 +981,12 @@  eth_ark_check_args(struct ark_adapter *ark, const char *params)
 		ark_pktchkr_setup(ark->pc);
 	}
 
-	return 0;
+	ret = 0;
+
+free_kvlist:
+	rte_kvargs_free(kvlist);
+
+	return ret;
 }
 
 RTE_PMD_REGISTER_PCI(net_ark, rte_ark_pmd);