diff mbox series

[API-NEXT,v1,1/2] test: performance: crypto: fix packet freeing

Message ID 1503543605-9923-2-git-send-email-odpbot@yandex.ru
State New
Headers show
Series [API-NEXT,v1,1/2] test: performance: crypto: fix packet freeing | expand

Commit Message

Github ODP bot Aug. 24, 2017, 3 a.m. UTC
From: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org>


With new packet reference code, ODP has become stricter on packet double
free errors, highlighting several bugs in packet handling code in crypto
performance test. Fix packet double-free errors.

Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org>

---
/** Email created from pull request 143 (lumag:fix-crypto-perf)
 ** https://github.com/Linaro/odp/pull/143
 ** Patch: https://github.com/Linaro/odp/pull/143.patch
 ** Base sha: 859293ad9b3c862264bb0fbfe8e7037b5e04d084
 ** Merge commit sha: f0e88d2b61da20ba130f3e8a895643a37db524b0
 **/
 test/common_plat/performance/odp_crypto.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)
diff mbox series

Patch

diff --git a/test/common_plat/performance/odp_crypto.c b/test/common_plat/performance/odp_crypto.c
index 7a25ffdc..8449f1fc 100644
--- a/test/common_plat/performance/odp_crypto.c
+++ b/test/common_plat/performance/odp_crypto.c
@@ -560,6 +560,8 @@  run_measure_one(crypto_args_t *cargs,
 				if (rc <= 0) {
 					app_err("failed odp_crypto_packet_op_enq: rc = %d\n",
 						rc);
+					if (!cargs->reuse_packet)
+						odp_packet_free(pkt);
 					break;
 				}
 				packets_sent += rc;
@@ -569,6 +571,8 @@  run_measure_one(crypto_args_t *cargs,
 				if (rc <= 0) {
 					app_err("failed odp_crypto_packet_op: rc = %d\n",
 						rc);
+					if (!cargs->reuse_packet)
+						odp_packet_free(pkt);
 					break;
 				}
 				packets_sent += rc;
@@ -582,16 +586,14 @@  run_measure_one(crypto_args_t *cargs,
 						  config->session.
 						   auth_digest_len);
 				}
-				if (!cargs->in_place) {
-					if (cargs->reuse_packet)
-						pkt = out_pkt;
-					else
-						odp_packet_free(out_pkt);
-				}
+				if (cargs->reuse_packet)
+					pkt = out_pkt;
+				else
+					odp_packet_free(out_pkt);
 			}
 		}
 
-		if (out_queue != ODP_QUEUE_INVALID) {
+		if (cargs->schedule || cargs->poll) {
 			odp_event_t ev;
 			odp_crypto_packet_result_t result;
 			odp_packet_t out_pkt;
@@ -646,7 +648,7 @@  run_measure_one(crypto_args_t *cargs,
 					cargs->iteration_count;
 	}
 
-	if (ODP_PACKET_INVALID != pkt)
+	if (cargs->reuse_packet)
 		odp_packet_free(pkt);
 
 	return rc < 0 ? rc : 0;