]> git.droids-corp.org - dpdk.git/commitdiff
cryptodev: fix asymmetric private session variable size
authorCiara Power <ciara.power@intel.com>
Fri, 18 Feb 2022 12:57:52 +0000 (12:57 +0000)
committerAkhil Goyal <gakhil@marvell.com>
Tue, 22 Feb 2022 19:00:57 +0000 (20:00 +0100)
When creating the asymmetric session mempool, the maximum private
session size of all devices is used when creating the mempool
object size.
The return value for ``rte_cryptodev_asym_get_private_session_size``
is unsigned int, whereas the variable was uint8_t, leading to a
possible overflow issue.

To fix this, the variable for private session size is now changed to
unsigned int to match the function return type.

Fixes: 1f1e4b7cbaad ("cryptodev: use single mempool for asymmetric session")
Reported-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
Signed-off-by: Ciara Power <ciara.power@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>
lib/cryptodev/rte_cryptodev.c

index 321d2171d4c4d04b2755885b7c03aa51257182d4..3500a2d470acf2383e01bbd99c516dc794e9d826 100644 (file)
@@ -1799,7 +1799,8 @@ rte_cryptodev_asym_session_pool_create(const char *name, uint32_t nb_elts,
        struct rte_mempool *mp;
        struct rte_cryptodev_asym_session_pool_private_data *pool_priv;
        uint32_t obj_sz, obj_sz_aligned;
-       uint8_t dev_id, priv_sz, max_priv_sz = 0;
+       uint8_t dev_id;
+       unsigned int priv_sz, max_priv_sz = 0;
 
        for (dev_id = 0; dev_id < RTE_CRYPTO_MAX_DEVS; dev_id++)
                if (rte_cryptodev_is_valid_dev(dev_id)) {