app/crypto-perf: check range of socket id
authorBruce Richardson <bruce.richardson@intel.com>
Mon, 8 Apr 2019 09:25:14 +0000 (10:25 +0100)
committerAkhil Goyal <akhil.goyal@nxp.com>
Thu, 18 Apr 2019 14:01:28 +0000 (16:01 +0200)
The socket_id is used as an array index so should be within the range
of zero to max numa nodes. Add a range check to ensure we don't get
excessive values.

Coverity issue: 336812
Coverity issue: 336829
Fixes: 2c59bd32b70d ("cryptodev: do not create session mempool internally")
CC: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
app/test-crypto-perf/main.c

index 175c639..4247f6a 100644 (file)
@@ -183,6 +183,11 @@ cperf_initialize_cryptodev(struct cperf_options *opts, uint8_t *enabled_cdevs)
 
                struct rte_cryptodev_info cdev_info;
                uint8_t socket_id = rte_cryptodev_socket_id(cdev_id);
+               /* range check the socket_id - negative values become big
+                * positive ones due to use of unsigned value
+                */
+               if (socket_id >= RTE_MAX_NUMA_NODES)
+                       socket_id = 0;
 
                rte_cryptodev_info_get(cdev_id, &cdev_info);
                if (opts->nb_qps > cdev_info.max_nb_queue_pairs) {