ethdev: limit maximum number of queues
A buffer overflow happens in testpmd with some drivers since the queue arrays are limited to RTE_MAX_QUEUES_PER_PORT. The advertised capabilities of mlx4, mlx5 and softnic for the number of queues were the maximum number: UINT16_MAX. They must be limited by the configured RTE_MAX_QUEUES_PER_PORT that applications expect to be respected. The limitation is applied at ethdev level (function rte_eth_dev_info_get), in order to force the configured limit for all drivers. Fixes: 14b53e27b30e ("ethdev: fix crash with multiprocess") Cc: stable@dpdk.org Reported-by: Raslan Darawsheh <rasland@mellanox.com> Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com> Reviewed-by: David Marchand <david.marchand@redhat.com>
This commit is contained in:
parent
2d0cfc0e05
commit
20bbb9e045
@ -2986,6 +2986,12 @@ rte_eth_dev_info_get(uint16_t port_id, struct rte_eth_dev_info *dev_info)
|
||||
return eth_err(port_id, diag);
|
||||
}
|
||||
|
||||
/* Maximum number of queues should be <= RTE_MAX_QUEUES_PER_PORT */
|
||||
dev_info->max_rx_queues = RTE_MIN(dev_info->max_rx_queues,
|
||||
RTE_MAX_QUEUES_PER_PORT);
|
||||
dev_info->max_tx_queues = RTE_MIN(dev_info->max_tx_queues,
|
||||
RTE_MAX_QUEUES_PER_PORT);
|
||||
|
||||
dev_info->driver_name = dev->device->driver->name;
|
||||
dev_info->nb_rx_queues = dev->data->nb_rx_queues;
|
||||
dev_info->nb_tx_queues = dev->data->nb_tx_queues;
|
||||
|
Loading…
x
Reference in New Issue
Block a user