From 7c95d47c1ead28b7ffa0fc77e33d76b014c9511e Mon Sep 17 00:00:00 2001 From: Pablo de Lara Date: Thu, 13 Jul 2017 04:35:12 +0100 Subject: [PATCH] crypto/aesni_mb: fix possible crypto job leak When dequeueing operations from an AESNI-MB device, crypto jobs are dequeued from the internal scheduler in the Multi-buffer library. If the number of jobs available to retrieve are higher than the number of crypto operations that are required, then an extra job is retrieved (due to an incorrect conditional), but not used. This leads to a job leak and the operation associated to that job will not be ever dequeued. Fixes: 0f548b50a160 ("crypto/aesni_mb: process crypto op on dequeue") Cc: stable@dpdk.org Signed-off-by: Pablo de Lara Acked-by: Declan Doherty --- drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c index 3aaa070e2c..13cffaf27b 100644 --- a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c +++ b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c @@ -587,7 +587,7 @@ handle_completed_jobs(struct aesni_mb_qp *qp, JOB_AES_HMAC *job, struct rte_crypto_op *op = NULL; unsigned processed_jobs = 0; - while (job != NULL && processed_jobs < nb_ops) { + while (job != NULL) { op = post_process_mb_job(qp, job); if (op) { @@ -597,6 +597,8 @@ handle_completed_jobs(struct aesni_mb_qp *qp, JOB_AES_HMAC *job, qp->stats.dequeue_err_count++; break; } + if (processed_jobs == nb_ops) + break; job = (*qp->op_fns->job.get_completed_job)(&qp->mb_mgr); } -- 2.20.1