crypto/qat: verify session IOVA
authorAdam Dybkowski <adamx.dybkowski@intel.com>
Mon, 8 Jun 2020 13:15:03 +0000 (15:15 +0200)
committerAkhil Goyal <akhil.goyal@nxp.com>
Tue, 7 Jul 2020 22:15:35 +0000 (00:15 +0200)
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.dybkowski@intel.com>
Acked-by: Fiona Trahe <fiona.trahe@intel.com>
drivers/crypto/qat/qat_sym_session.c

index 58bdbd3..11b459e 100644 (file)
@@ -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;