cryptodev: fix initialization on multi-process
authorJulien Meunier <julien.meunier@nokia.com>
Wed, 7 Aug 2019 08:39:23 +0000 (11:39 +0300)
committerAkhil Goyal <akhil.goyal@nxp.com>
Wed, 9 Oct 2019 09:50:12 +0000 (11:50 +0200)
Primary process is responsible to initialize the data struct of each
crypto devices.

Secondary process should not override this data during the
initialization.

Fixes: d11b0f30df88 ("cryptodev: introduce API and framework for crypto devices")
Cc: stable@dpdk.org
Signed-off-by: Julien Meunier <julien.meunier@nokia.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
lib/librte_cryptodev/rte_cryptodev.c

index 43bc335..b16ef7b 100644 (file)
@@ -725,12 +725,14 @@ rte_cryptodev_pmd_allocate(const char *name, int socket_id)
 
                cryptodev->data = *cryptodev_data;
 
-               strlcpy(cryptodev->data->name, name,
-                       RTE_CRYPTODEV_NAME_MAX_LEN);
+               if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
+                       strlcpy(cryptodev->data->name, name,
+                               RTE_CRYPTODEV_NAME_MAX_LEN);
 
-               cryptodev->data->dev_id = dev_id;
-               cryptodev->data->socket_id = socket_id;
-               cryptodev->data->dev_started = 0;
+                       cryptodev->data->dev_id = dev_id;
+                       cryptodev->data->socket_id = socket_id;
+                       cryptodev->data->dev_started = 0;
+               }
 
                /* init user callbacks */
                TAILQ_INIT(&(cryptodev->link_intr_cbs));