app/test-crypto-perf: fix missing bounds check on socket id
Checks
Commit Message
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
CC: Declan Doherty <declan.doherty@intel.com>
CC: Fan Zhang <roy.fan.zhang@intel.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
app/test-crypto-perf/main.c | 5 +++++
1 file changed, 5 insertions(+)
Comments
> 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
> CC: Declan Doherty <declan.doherty@intel.com>
> CC: Fan Zhang <roy.fan.zhang@intel.com>
>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
> > 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
> > CC: Declan Doherty <declan.doherty@intel.com>
> > CC: Fan Zhang <roy.fan.zhang@intel.com>
> >
> > Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
>
> Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
Applied to dpdk-next-crypto
Thanks.
@@ -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) {