summaryrefslogtreecommitdiffstats
path: root/src/plugins/crypto_sw_scheduler/main.c
diff options
context:
space:
mode:
authorPiotrX Kleski <piotrx.kleski@intel.com>2020-11-24 08:26:26 +0000
committerDamjan Marion <dmarion@me.com>2020-12-04 22:52:16 +0000
commitef69b5103438ec099cf080b54a88a5333b1c055b (patch)
treee73b6cc9af90b469627b1552a967fae8c8367e57 /src/plugins/crypto_sw_scheduler/main.c
parent270f5235c04250ee3aafc78bce75f506e9847834 (diff)
crypto: fixed async frame enqueue race condition
Type: fix To avoid race condition happening in async crypto engines, async frame state and thread index set should happen before enqueue. In addition as the enqueue handler already returns the enqueue status, when an enqueue is failed, the async crypto engine shall not worry about setting the async frame state but let the submit_open_frame function to do just that. Signed-off-by: PiotrX Kleski <piotrx.kleski@intel.com> Reviewed-by: Fan Zhang <roy.fan.zhang@intel.com> Change-Id: Ic1b0c94478b3cfd5fab98657218bbd70c46a220a
Diffstat (limited to 'src/plugins/crypto_sw_scheduler/main.c')
-rw-r--r--src/plugins/crypto_sw_scheduler/main.c2
1 files changed, 0 insertions, 2 deletions
diff --git a/src/plugins/crypto_sw_scheduler/main.c b/src/plugins/crypto_sw_scheduler/main.c
index 7de84ff1200..2e4ad428ea0 100644
--- a/src/plugins/crypto_sw_scheduler/main.c
+++ b/src/plugins/crypto_sw_scheduler/main.c
@@ -88,10 +88,8 @@ crypto_sw_scheduler_frame_enqueue (vlib_main_t * vm,
u32 n_elts = frame->n_elts, i;
for (i = 0; i < n_elts; i++)
frame->elts[i].status = VNET_CRYPTO_OP_STATUS_FAIL_ENGINE_ERR;
- frame->state = VNET_CRYPTO_FRAME_STATE_ELT_ERROR;
return -1;
}
- frame->state = VNET_CRYPTO_FRAME_STATE_NOT_PROCESSED;
q->jobs[head & CRYPTO_SW_SCHEDULER_QUEUE_MASK] = frame;
head += 1;
CLIB_MEMORY_STORE_BARRIER ();