[dpdk-dev] app/test-crypto-perf: fix uninitialized scalar variable

Message ID 1486459306-11496-1-git-send-email-aleksanderx.gajewski@intel.com (mailing list archive)
State Changes Requested, archived
Delegated to: Pablo de Lara Guarch
Headers

Checks

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

Commit Message

Aleksander Gajewski Feb. 7, 2017, 9:21 a.m. UTC
  Fix problem with uninitialized nb_cryptodevs variable by
initialize it with 0 value. Program could jump to err label
without running cperf_initialize_cryptodev() function.

Coverity issue: 141073
Fixes: f8be1786b1b8 ("app/crypto-perf: introduce performance test
application")

Signed-off-by: Aleksander Gajewski <aleksanderx.gajewski@intel.com>
---
 app/test-crypto-perf/main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

De Lara Guarch, Pablo Feb. 9, 2017, 10:55 p.m. UTC | #1
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Aleksander
> Gajewski
> Sent: Tuesday, February 07, 2017 9:22 AM
> To: Doherty, Declan
> Cc: dev@dpdk.org; Gajewski, AleksanderX
> Subject: [dpdk-dev] [PATCH] app/test-crypto-perf: fix uninitialized scalar
> variable
> 
> Fix problem with uninitialized nb_cryptodevs variable by
> initialize it with 0 value. Program could jump to err label
> without running cperf_initialize_cryptodev() function.
> 
> Coverity issue: 141073
> Fixes: f8be1786b1b8 ("app/crypto-perf: introduce performance test
> application")
> 
> Signed-off-by: Aleksander Gajewski <aleksanderx.gajewski@intel.com>
> ---
>  app/test-crypto-perf/main.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/app/test-crypto-perf/main.c b/app/test-crypto-perf/main.c
> index 6c128d8..035021a 100644
> --- a/app/test-crypto-perf/main.c
> +++ b/app/test-crypto-perf/main.c
> @@ -264,7 +264,7 @@
> 
>  	void *ctx[RTE_MAX_LCORE] = { };
> 
> -	int nb_cryptodevs;
> +	int nb_cryptodevs = 0;
>  	uint8_t cdev_id, i;
>  	uint8_t enabled_cdevs[RTE_CRYPTO_MAX_DEVS] = { 0 };
> 
> --
> 1.9.1

Actually, this fix is incomplete.
In a few lines below, we have these lines:

        nb_cryptodevs = cperf_initialize_cryptodev(&opts, enabled_cdevs);
        if (nb_cryptodevs < 1) {
                RTE_LOG(ERR, USER1, "Failed to initialise requested crypto "
                                "device type\n");
                goto err;
        }

If cperf_initialize_cryptodev() returns -EINVAL, then, nb_cryptodevs will be negative,
which shouldn't be when going to err label.
I think "nb_cryptodevs = 0 " is necessary inside this conditional, before jumping to err.

Thanks,
Pablo
  

Patch

diff --git a/app/test-crypto-perf/main.c b/app/test-crypto-perf/main.c
index 6c128d8..035021a 100644
--- a/app/test-crypto-perf/main.c
+++ b/app/test-crypto-perf/main.c
@@ -264,7 +264,7 @@ 
 
 	void *ctx[RTE_MAX_LCORE] = { };
 
-	int nb_cryptodevs;
+	int nb_cryptodevs = 0;
 	uint8_t cdev_id, i;
 	uint8_t enabled_cdevs[RTE_CRYPTO_MAX_DEVS] = { 0 };