]> git.droids-corp.org - dpdk.git/commitdiff
crypto/qat: fix process type handling
authorKai Ji <kai.ji@intel.com>
Tue, 1 Mar 2022 15:02:54 +0000 (23:02 +0800)
committerAkhil Goyal <gakhil@marvell.com>
Fri, 4 Mar 2022 10:24:43 +0000 (11:24 +0100)
This patch fix the memory corruptions issue reported by
coverity. The process type handling in QAT PMDs where only
primary and secondary process are supported in qat build
request.

Coverity issue: 376551, 376570, 376534
Fixes: fb3b9f492205 ("crypto/qat: rework burst data path")
Signed-off-by: Kai Ji <kai.ji@intel.com>
drivers/crypto/qat/dev/qat_crypto_pmd_gen3.c
drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c
drivers/crypto/qat/dev/qat_sym_pmd_gen1.c
drivers/crypto/qat/qat_sym.c

index 5084a5fcd154a0cd1319981f510619fb4fa7acbc..2d5f10aeac49d4e3d899ef0094a6a63a252e197c 100644 (file)
@@ -358,6 +358,9 @@ qat_sym_crypto_set_session_gen3(void *cdev __rte_unused, void *session)
        enum rte_proc_type_t proc_type = rte_eal_process_type();
        int ret;
 
+       if (proc_type == RTE_PROC_AUTO || proc_type == RTE_PROC_INVALID)
+               return -EINVAL;
+
        ret = qat_sym_crypto_set_session_gen1(cdev, session);
        /* special single pass build request for GEN3 */
        if (ctx->is_single_pass)
index bd7f3785dffb6d9badbc505bfea08a85b4fb3413..3d8b2e377c8b13b53835ec15603ecae8a0e4ebf8 100644 (file)
@@ -189,6 +189,9 @@ qat_sym_crypto_set_session_gen4(void *cdev, void *session)
        enum rte_proc_type_t proc_type = rte_eal_process_type();
        int ret;
 
+       if (proc_type == RTE_PROC_AUTO || proc_type == RTE_PROC_INVALID)
+               return -EINVAL;
+
        ret = qat_sym_crypto_set_session_gen1(cdev, session);
        /* special single pass build request for GEN4 */
        if (ctx->is_single_pass && ctx->is_ucs)
index 3bcb53cf9f68bc76189887d4634f4ec4e14111b9..99f5a22a06a653d6524a4ef3194069d7befbb812 100644 (file)
@@ -1149,6 +1149,9 @@ qat_sym_crypto_set_session_gen1(void *cryptodev __rte_unused, void *session)
        enum rte_proc_type_t proc_type = rte_eal_process_type();
        int handle_mixed = 0;
 
+       if (proc_type == RTE_PROC_AUTO || proc_type == RTE_PROC_INVALID)
+               return -EINVAL;
+
        if ((ctx->qat_cmd == ICP_QAT_FW_LA_CMD_HASH_CIPHER ||
                        ctx->qat_cmd == ICP_QAT_FW_LA_CMD_CIPHER_HASH) &&
                        !ctx->is_gmac) {
index 1ccffad5abee37d75b5023c75abc7c50f2af4c44..ca8c9a81245c6148c9c2b5d20f3dd8481ad78cf2 100644 (file)
@@ -60,6 +60,10 @@ qat_sym_build_request(void *in_op, uint8_t *out_msg,
        uintptr_t build_request_p = (uintptr_t)opaque[1];
        qat_sym_build_request_t build_request = (void *)build_request_p;
        struct qat_sym_session *ctx = NULL;
+       enum rte_proc_type_t proc_type = rte_eal_process_type();
+
+       if (proc_type == RTE_PROC_AUTO || proc_type == RTE_PROC_INVALID)
+               return -EINVAL;
 
        if (likely(op->sess_type == RTE_CRYPTO_OP_WITH_SESSION)) {
                ctx = get_sym_session_private_data(op->sym->session,
@@ -71,11 +75,9 @@ qat_sym_build_request(void *in_op, uint8_t *out_msg,
                if (sess != (uintptr_t)ctx) {
                        struct rte_cryptodev *cdev;
                        struct qat_cryptodev_private *internals;
-                       enum rte_proc_type_t proc_type;
 
                        cdev = rte_cryptodev_pmd_get_dev(ctx->dev_id);
                        internals = cdev->data->dev_private;
-                       proc_type = rte_eal_process_type();
 
                        if (internals->qat_dev->qat_dev_gen != dev_gen) {
                                op->status =
@@ -105,7 +107,6 @@ qat_sym_build_request(void *in_op, uint8_t *out_msg,
                if ((void *)sess != (void *)op->sym->sec_session) {
                        struct rte_cryptodev *cdev;
                        struct qat_cryptodev_private *internals;
-                       enum rte_proc_type_t proc_type;
 
                        ctx = get_sec_session_private_data(
                                        op->sym->sec_session);
@@ -130,7 +131,6 @@ qat_sym_build_request(void *in_op, uint8_t *out_msg,
                        }
                        cdev = rte_cryptodev_pmd_get_dev(ctx->dev_id);
                        internals = cdev->data->dev_private;
-                       proc_type = rte_eal_process_type();
 
                        if (internals->qat_dev->qat_dev_gen != dev_gen) {
                                op->status =