From b9e3ac6964742e3a028e7a0bdca9e27f68cef4f9 Mon Sep 17 00:00:00 2001 From: Adam Dybkowski Date: Mon, 8 Jun 2020 15:15:03 +0200 Subject: [PATCH] crypto/qat: verify session IOVA This patch adds the verification of the crypto session IOVA that should be known (not zero) to proceed with the session initialisation. In case of unknown IOVA the error code -EINVAL is returned. Signed-off-by: Adam Dybkowski Acked-by: Fiona Trahe --- drivers/crypto/qat/qat_sym_session.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/crypto/qat/qat_sym_session.c b/drivers/crypto/qat/qat_sym_session.c index 58bdbd3438..11b459ee82 100644 --- a/drivers/crypto/qat/qat_sym_session.c +++ b/drivers/crypto/qat/qat_sym_session.c @@ -537,8 +537,16 @@ qat_sym_session_set_parameters(struct rte_cryptodev *dev, int ret; int qat_cmd_id; + /* Verify the session physical address is known */ + rte_iova_t session_paddr = rte_mempool_virt2iova(session); + if (session_paddr == 0 || session_paddr == RTE_BAD_IOVA) { + QAT_LOG(ERR, + "Session physical address unknown. Bad memory pool."); + return -EINVAL; + } + /* Set context descriptor physical address */ - session->cd_paddr = rte_mempool_virt2iova(session) + + session->cd_paddr = session_paddr + offsetof(struct qat_sym_session, cd); session->min_qat_dev_gen = QAT_GEN1; -- 2.20.1