From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9B6BC42AE6; Fri, 12 May 2023 16:10:04 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 916ED42FB4; Fri, 12 May 2023 16:10:00 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 6B65B42FA2 for ; Fri, 12 May 2023 16:09:57 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 34C90i4J021678; Fri, 12 May 2023 07:09:56 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=rPIdLZ0sclO9K6Z2pODJzBOEmhfLEZSPQbC3bMmHRmA=; b=DlWGfg4GWaV5Diqma/adi957Je+Qg6VebyZqeBMKJs1N0YbrZo/KArbr7MZI99SIjPUQ n5Y2FkR4zKxbBxy5dJ42zxHkUzYLgpJWdr4xP+Um2H/RHrl9n4WkUA592W5nVNOi9kS5 75sm1KIlOfdlDfLts/AsKCVse8fSU5+rHK7WYaHP19rt46xbXkMj10CsL91NhZDoEY3Q QzUkSBFTBE2/Y8P6dvT6H9B0MVsxURGj2ZuMJYy2Rc5YpPRwAH1PM1OxvaiApDLex4Ue MSS/U55hRKh/OriJ8C5DZaOCktzB/gONBCyEGspG3Xox6v7CEA/h1L6Ha7A/WruROSZ5 +Q== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3qh9tk2wx0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Fri, 12 May 2023 07:09:56 -0700 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.48; Fri, 12 May 2023 07:09:50 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.48 via Frontend Transport; Fri, 12 May 2023 07:09:50 -0700 Received: from BG-LT92004.corp.innovium.com (unknown [10.193.65.175]) by maili.marvell.com (Postfix) with ESMTP id 6D3793F704D; Fri, 12 May 2023 07:09:47 -0700 (PDT) From: Anoob Joseph To: Akhil Goyal , Fan Zhang , Ciara Power CC: Hemant Agrawal , Jerin Jacob , Tejasree Kondoj , Subject: [PATCH 1/2] test/crypto: free memory in error and skip paths Date: Fri, 12 May 2023 19:39:45 +0530 Message-ID: <20230512140946.195-1-anoobj@marvell.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Proofpoint-GUID: 20TqcoSN_xw8g_iRAv569_gkXOmOpbCr X-Proofpoint-ORIG-GUID: 20TqcoSN_xw8g_iRAv569_gkXOmOpbCr X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-05-12_08,2023-05-05_01,2023-02-09_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org In multi session tests, multiple sessions get created. So the handling in ut_teardown won't guard against any memory that is not freed by the test case. Test case should free sessions as well as local memory that was used to save session pointers both in case of unsupported cases as well as operation failures. Signed-off-by: Anoob Joseph --- app/test/test_cryptodev.c | 55 +++++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 16 deletions(-) diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c index fb4fc4e805..86e63a33fc 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -12751,8 +12751,8 @@ test_multi_session(void) struct crypto_testsuite_params *ts_params = &testsuite_params; struct crypto_unittest_params *ut_params = &unittest_params; struct rte_cryptodev_info dev_info; + int i, nb_sess, ret = TEST_SUCCESS; void **sessions; - uint16_t i; /* Verify the capabilities */ struct rte_cryptodev_sym_capability_idx cap_idx; @@ -12782,21 +12782,25 @@ test_multi_session(void) sessions[i] = rte_cryptodev_sym_session_create( ts_params->valid_devs[0], &ut_params->auth_xform, ts_params->session_mpool); - if (sessions[i] == NULL && rte_errno == ENOTSUP) - return TEST_SKIPPED; + if (sessions[i] == NULL && rte_errno == ENOTSUP) { + nb_sess = i; + ret = TEST_SKIPPED; + break; + } TEST_ASSERT_NOT_NULL(sessions[i], "Session creation failed at session number %u", i); + /* Attempt to send a request on each session */ - TEST_ASSERT_SUCCESS( test_AES_CBC_HMAC_SHA512_decrypt_perform( + ret = test_AES_CBC_HMAC_SHA512_decrypt_perform( sessions[i], ut_params, ts_params, catch_22_quote_2_512_bytes_AES_CBC_ciphertext, catch_22_quote_2_512_bytes_AES_CBC_HMAC_SHA512_digest, - aes_cbc_iv), - "Failed to perform decrypt on request number %u.", i); + aes_cbc_iv); + /* free crypto operation structure */ rte_crypto_op_free(ut_params->op); @@ -12815,16 +12819,25 @@ test_multi_session(void) rte_pktmbuf_free(ut_params->ibuf); ut_params->ibuf = 0; } + + if (ret == TEST_SKIPPED) { + i++; + break; + } + + TEST_ASSERT_SUCCESS(ret, "Failed to perform decrypt on request number %u.", i); } - for (i = 0; i < MAX_NB_SESSIONS; i++) { + nb_sess = i; + + for (i = 0; i < nb_sess; i++) { rte_cryptodev_sym_session_free(ts_params->valid_devs[0], sessions[i]); } rte_free(sessions); - return TEST_SUCCESS; + return ret; } struct multi_session_params { @@ -12843,8 +12856,9 @@ test_multi_session_random_usage(void) { struct crypto_testsuite_params *ts_params = &testsuite_params; struct rte_cryptodev_info dev_info; + uint32_t nb_sess, i, j; + int ret = TEST_SUCCESS; void **sessions; - uint32_t i, j; struct multi_session_params ut_paramz[] = { { @@ -12903,27 +12917,30 @@ test_multi_session_random_usage(void) ts_params->valid_devs[0], &ut_paramz[i].ut_params.auth_xform, ts_params->session_mpool); - if (sessions[i] == NULL && rte_errno == ENOTSUP) - return TEST_SKIPPED; + if (sessions[i] == NULL && rte_errno == ENOTSUP) { + nb_sess = i; + ret = TEST_SKIPPED; + goto session_clear; + } TEST_ASSERT_NOT_NULL(sessions[i], "Session creation failed at session number %u", i); } + nb_sess = i; + srand(time(NULL)); for (i = 0; i < 40000; i++) { j = rand() % MB_SESSION_NUMBER; - TEST_ASSERT_SUCCESS( - test_AES_CBC_HMAC_SHA512_decrypt_perform( + ret = test_AES_CBC_HMAC_SHA512_decrypt_perform( sessions[j], &ut_paramz[j].ut_params, ts_params, ut_paramz[j].cipher, ut_paramz[j].digest, - ut_paramz[j].iv), - "Failed to perform decrypt on request number %u.", i); + ut_paramz[j].iv); rte_crypto_op_free(ut_paramz[j].ut_params.op); @@ -12943,9 +12960,15 @@ test_multi_session_random_usage(void) rte_pktmbuf_free(ut_paramz[j].ut_params.ibuf); ut_paramz[j].ut_params.ibuf = 0; } + + if (ret == TEST_SKIPPED) + break; + + TEST_ASSERT_SUCCESS(ret, "Failed to perform decrypt on request number %u.", i); } - for (i = 0; i < MB_SESSION_NUMBER; i++) { +session_clear: + for (i = 0; i < nb_sess; i++) { rte_cryptodev_sym_session_free(ts_params->valid_devs[0], sessions[i]); } -- 2.25.1