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 <adamx.dybkow...@intel.com>
---
 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 58bdbd343..11b459ee8 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.25.1

Reply via email to