From: Somnath Kotur Date: Fri, 11 Sep 2020 01:55:49 +0000 (-0700) Subject: net/bnxt: fix crash in VFR queue select X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=63cf825a17d47bdf736c2c81bbd8280f55d5f488;p=dpdk.git 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 --- 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;