From c61518ed86a02118322c9250be1797a58e3974ba Mon Sep 17 00:00:00 2001 From: Anoob Joseph Date: Mon, 10 Sep 2018 12:10:58 +0530 Subject: [PATCH] app/test-crypto-perf: fix double allocation of memory The field, 'cipher_iv.data' is allocated twice when cipher is not null. Ideally the allocation should depend only on the field 'cperf_options.cipher_iv_sz'. This will make sure this code path gets valid for ciphers which doesn't require IV. Fixes: 0fbd75a99fc9 ("cryptodev: move IV parameters to session") Cc: stable@dpdk.org Signed-off-by: Akash Saxena Signed-off-by: Anoob Joseph Acked-by: Akhil Goyal --- app/test-crypto-perf/cperf_test_vectors.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/app/test-crypto-perf/cperf_test_vectors.c b/app/test-crypto-perf/cperf_test_vectors.c index 907a995ccc..1af9524990 100644 --- a/app/test-crypto-perf/cperf_test_vectors.c +++ b/app/test-crypto-perf/cperf_test_vectors.c @@ -419,13 +419,19 @@ cperf_test_vector_get_dummy(struct cperf_options *options) t_vec->cipher_key.length = 0; t_vec->ciphertext.data = plaintext; t_vec->cipher_key.data = NULL; - t_vec->cipher_iv.data = NULL; } else { t_vec->cipher_key.length = options->cipher_key_sz; t_vec->ciphertext.data = ciphertext; t_vec->cipher_key.data = cipher_key; - t_vec->cipher_iv.data = rte_malloc(NULL, options->cipher_iv_sz, - 16); + } + + /* Init IV data ptr */ + t_vec->cipher_iv.data = NULL; + + if (options->cipher_iv_sz != 0) { + /* Set IV parameters */ + t_vec->cipher_iv.data = rte_malloc(NULL, + options->cipher_iv_sz, 16); if (t_vec->cipher_iv.data == NULL) { rte_free(t_vec); return NULL; @@ -433,17 +439,7 @@ cperf_test_vector_get_dummy(struct cperf_options *options) memcpy(t_vec->cipher_iv.data, iv, options->cipher_iv_sz); } t_vec->ciphertext.length = options->max_buffer_size; - - /* Set IV parameters */ - t_vec->cipher_iv.data = rte_malloc(NULL, options->cipher_iv_sz, - 16); - if (options->cipher_iv_sz && t_vec->cipher_iv.data == NULL) { - rte_free(t_vec); - return NULL; - } - memcpy(t_vec->cipher_iv.data, iv, options->cipher_iv_sz); t_vec->cipher_iv.length = options->cipher_iv_sz; - t_vec->data.cipher_offset = 0; t_vec->data.cipher_length = options->max_buffer_size; -- 2.20.1