[dpdk-dev,v2] crypto: fix memory leak
Commit Message
When parsing the parameters for virtual device initialization,
rte_kvargs structure was being freed only if there was an error,
not when parsing was successful.
Coverity issue: 124568
Fixes: f3e764fa2fb7 ("cryptodev: uninline parameter parsing")
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
---
Changes in v2:
- Initialize ret variable to 0 (success)
lib/librte_cryptodev/rte_cryptodev.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
Comments
> -----Original Message-----
> From: De Lara Guarch, Pablo
> Sent: Monday, July 18, 2016 1:47 PM
> To: dev@dpdk.org
> Cc: Doherty, Declan <declan.doherty@intel.com>; Pattan, Reshma
> <reshma.pattan@intel.com>; De Lara Guarch, Pablo
> <pablo.de.lara.guarch@intel.com>
> Subject: [PATCH v2] crypto: fix memory leak
>
> When parsing the parameters for virtual device initialization, rte_kvargs
> structure was being freed only if there was an error, not when parsing was
> successful.
>
> Coverity issue: 124568
>
> Fixes: f3e764fa2fb7 ("cryptodev: uninline parameter parsing")
>
> Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Reshma Pattan <reshma.pattan@intel.com>
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Pablo de Lara
> Sent: Monday, July 18, 2016 1:47 PM
> To: dev@dpdk.org
> Cc: Doherty, Declan <declan.doherty@intel.com>; Pattan, Reshma
> <reshma.pattan@intel.com>; De Lara Guarch, Pablo
> <pablo.de.lara.guarch@intel.com>
> Subject: [dpdk-dev] [PATCH v2] crypto: fix memory leak
>
> ...
>
> free_kvlist:
> - rte_kvargs_free(kvlist);
> + if (kvlist != NULL)
> + rte_kvargs_free(kvlist);
> return ret;
The test against NULL isn't required, that is done in rte_kvargs_free() anyway.
@@ -148,8 +148,8 @@ int
rte_cryptodev_parse_vdev_init_params(struct rte_crypto_vdev_init_params *params,
const char *input_args)
{
- struct rte_kvargs *kvlist;
- int ret;
+ struct rte_kvargs *kvlist = NULL;
+ int ret = 0;
if (params == NULL)
return -EINVAL;
@@ -187,10 +187,9 @@ rte_cryptodev_parse_vdev_init_params(struct rte_crypto_vdev_init_params *params,
}
}
- return 0;
-
free_kvlist:
- rte_kvargs_free(kvlist);
+ if (kvlist != NULL)
+ rte_kvargs_free(kvlist);
return ret;
}