crypto/octeontx2: fix session-less mode
A temporary session is created for sessionless crypto operations. rte_cryptodev_sym_session_create() should be used for creating the temporary session as it initializes the session structure in the correct way. Also the session should be set to 0 before freeing it. Fixes: 17ac2a72191b ("crypto/octeontx2: add enqueue/dequeue ops") Cc: stable@dpdk.org Signed-off-by: Ankur Dwivedi <adwivedi@marvell.com> Acked-by: Anoob Joseph <anoobj@marvell.com>
This commit is contained in:
parent
3cd73a1a1c
commit
4a35a46409
@ -648,8 +648,8 @@ otx2_cpt_enqueue_sym_sessless(struct otx2_cpt_qp *qp, struct rte_crypto_op *op,
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* Create temporary session */
|
/* Create temporary session */
|
||||||
|
sess = rte_cryptodev_sym_session_create(qp->sess_mp);
|
||||||
if (rte_mempool_get(qp->sess_mp, (void **)&sess))
|
if (sess == NULL)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
ret = sym_session_configure(driver_id, sym_op->xform, sess,
|
ret = sym_session_configure(driver_id, sym_op->xform, sess,
|
||||||
@ -866,6 +866,8 @@ static inline void
|
|||||||
otx2_cpt_dequeue_post_process(struct otx2_cpt_qp *qp, struct rte_crypto_op *cop,
|
otx2_cpt_dequeue_post_process(struct otx2_cpt_qp *qp, struct rte_crypto_op *cop,
|
||||||
uintptr_t *rsp, uint8_t cc)
|
uintptr_t *rsp, uint8_t cc)
|
||||||
{
|
{
|
||||||
|
unsigned int sz;
|
||||||
|
|
||||||
if (cop->type == RTE_CRYPTO_OP_TYPE_SYMMETRIC) {
|
if (cop->type == RTE_CRYPTO_OP_TYPE_SYMMETRIC) {
|
||||||
if (cop->sess_type == RTE_CRYPTO_OP_SECURITY_SESSION) {
|
if (cop->sess_type == RTE_CRYPTO_OP_SECURITY_SESSION) {
|
||||||
if (likely(cc == OTX2_IPSEC_PO_CC_SUCCESS)) {
|
if (likely(cc == OTX2_IPSEC_PO_CC_SUCCESS)) {
|
||||||
@ -894,6 +896,9 @@ otx2_cpt_dequeue_post_process(struct otx2_cpt_qp *qp, struct rte_crypto_op *cop,
|
|||||||
if (unlikely(cop->sess_type == RTE_CRYPTO_OP_SESSIONLESS)) {
|
if (unlikely(cop->sess_type == RTE_CRYPTO_OP_SESSIONLESS)) {
|
||||||
sym_session_clear(otx2_cryptodev_driver_id,
|
sym_session_clear(otx2_cryptodev_driver_id,
|
||||||
cop->sym->session);
|
cop->sym->session);
|
||||||
|
sz = rte_cryptodev_sym_get_existing_header_session_size(
|
||||||
|
cop->sym->session);
|
||||||
|
memset(cop->sym->session, 0, sz);
|
||||||
rte_mempool_put(qp->sess_mp, cop->sym->session);
|
rte_mempool_put(qp->sess_mp, cop->sym->session);
|
||||||
cop->sym->session = NULL;
|
cop->sym->session = NULL;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user