From 63cf825a17d47bdf736c2c81bbd8280f55d5f488 Mon Sep 17 00:00:00 2001 From: Somnath Kotur Date: Thu, 10 Sep 2020 18:55:49 -0700 Subject: [PATCH] net/bnxt: fix crash in VFR queue select Instead of bounds checking against max possible rings while selecting queue index for the VF representor, do it against the number of rings configured. Fixes: 6dc83230b43b ("net/bnxt: support port representor data path") Cc: stable@dpdk.org Signed-off-by: Somnath Kotur Reviewed-by: Venkat Duvvuru --- drivers/net/bnxt/bnxt_reps.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/bnxt/bnxt_reps.c b/drivers/net/bnxt/bnxt_reps.c index b975d5af0d..ef5bd06655 100644 --- a/drivers/net/bnxt/bnxt_reps.c +++ b/drivers/net/bnxt/bnxt_reps.c @@ -45,9 +45,12 @@ bnxt_vfr_recv(uint16_t port_id, uint16_t queue_id, struct rte_mbuf *mbuf) vfr_eth_dev = &rte_eth_devices[port_id]; vfr_bp = vfr_eth_dev->data->dev_private; - /* If rxq_id happens to be > max rep_queue, use rxq0 */ - que = queue_id < BNXT_MAX_VF_REP_RINGS ? queue_id : 0; + /* If rxq_id happens to be > nr_rings, use ring 0 */ + que = queue_id < vfr_bp->rx_nr_rings ? queue_id : 0; rep_rxq = vfr_bp->rx_queues[que]; + /* Ideally should not happen now, paranoid check */ + if (!rep_rxq) + return 1; rep_rxr = rep_rxq->rx_ring; mask = rep_rxr->rx_ring_struct->ring_mask; -- 2.20.1