On Thu, Oct 1, 2020 at 11:14 AM Ferruh Yigit <ferruh.yi...@intel.com> wrote:
>
> A crash is detected when '--txpkts=#' parameter provided to the testpmd,
> this is because queue information is requested before queues have been
> allocated.
>
> Adding check to queue info APIs
> ('rte_eth_rx_queue_info_get()' & 'rte_eth_tx_queue_info_get')
> to protect against similar cases.
>
> Fixes: ba2fb4f022fc ("ethdev: check if queue setup when getting queue info")
>
> Signed-off-by: Ferruh Yigit <ferruh.yi...@intel.com>

Reviewed-by: Ajit Khaparde <ajit.khapa...@broadcom.com>

> ---
>  lib/librte_ethdev/rte_ethdev.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c
> index 0f56541fbc..9805184633 100644
> --- a/lib/librte_ethdev/rte_ethdev.c
> +++ b/lib/librte_ethdev/rte_ethdev.c
> @@ -4688,7 +4688,8 @@ rte_eth_rx_queue_info_get(uint16_t port_id, uint16_t 
> queue_id,
>                 return -EINVAL;
>         }
>
> -       if (dev->data->rx_queues[queue_id] == NULL) {
> +       if (dev->data->rx_queues == NULL ||
> +                       dev->data->rx_queues[queue_id] == NULL) {
>                 RTE_ETHDEV_LOG(ERR,
>                                "Rx queue %"PRIu16" of device with port_id=%"
>                                PRIu16" has not been setup\n",
> @@ -4727,7 +4728,8 @@ rte_eth_tx_queue_info_get(uint16_t port_id, uint16_t 
> queue_id,
>                 return -EINVAL;
>         }
>
> -       if (dev->data->tx_queues[queue_id] == NULL) {
> +       if (dev->data->tx_queues == NULL ||
> +                       dev->data->tx_queues[queue_id] == NULL) {
>                 RTE_ETHDEV_LOG(ERR,
>                                "Tx queue %"PRIu16" of device with port_id=%"
>                                PRIu16" has not been setup\n",
> --
> 2.26.2
>

Reply via email to