From: Adrien Mazarguil Date: Tue, 31 Oct 2017 10:31:07 +0000 (+0100) Subject: net/mlx4: fix queue index check on flow rules X-Git-Tag: spdx-start~975 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=e21bdfaa2c6737bc8173f0b273f53b602c79c2e7;p=dpdk.git net/mlx4: fix queue index check on flow rules Users are not prevented from creating flow rules targeting nonexistent queues, which silently makes such rules drop-like. While it can be thought as a feature, reporting an error instead is actually far more useful in order to catch common mistakes. Fixes: 078b8b452e6b ("net/mlx4: add RSS flow rule action support") Signed-off-by: Adrien Mazarguil --- diff --git a/drivers/net/mlx4/mlx4_flow.c b/drivers/net/mlx4/mlx4_flow.c index 86bac1bc29..8b87b29890 100644 --- a/drivers/net/mlx4/mlx4_flow.c +++ b/drivers/net/mlx4/mlx4_flow.c @@ -734,6 +734,11 @@ fill: if (flow->rss) break; queue = action->conf; + if (queue->index >= priv->dev->data->nb_rx_queues) { + msg = "queue target index beyond number of" + " configured Rx queues"; + goto exit_action_not_supported; + } flow->rss = mlx4_rss_get (priv, 0, mlx4_rss_hash_key_default, 1, &queue->index); @@ -760,6 +765,15 @@ fill: ETH_RSS_NONFRAG_IPV6_TCP), }; /* Sanity checks. */ + for (i = 0; i < rss->num; ++i) + if (rss->queue[i] >= + priv->dev->data->nb_rx_queues) + break; + if (i != rss->num) { + msg = "queue index target beyond number of" + " configured Rx queues"; + goto exit_action_not_supported; + } if (!rte_is_power_of_2(rss->num)) { msg = "for RSS, mlx4 requires the number of" " queues to be a power of two";