net/mlx5: fix work queue array size
authorNélio Laranjeiro <nelio.laranjeiro@6wind.com>
Tue, 24 Oct 2017 15:18:13 +0000 (17:18 +0200)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 26 Oct 2017 00:33:01 +0000 (02:33 +0200)
Indirection table size must be in log to communicate with verbs when the
number of queue is not a power of two, the maximum indirection table
size is use, but not converted to log2.  This makes a memory corruption.

Fixes: 4c7a0f5ff876 ("net/mlx5: make indirection tables shareable")

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
drivers/net/mlx5/mlx5_rxq.c

index daf05cb..a1f382b 100644 (file)
@@ -1120,7 +1120,7 @@ mlx5_priv_ind_table_ibv_new(struct priv *priv, uint16_t queues[],
        struct mlx5_ind_table_ibv *ind_tbl;
        const unsigned int wq_n = rte_is_power_of_2(queues_n) ?
                log2above(queues_n) :
-               priv->ind_table_max_size;
+               log2above(priv->ind_table_max_size);
        struct ibv_wq *wq[1 << wq_n];
        unsigned int i;
        unsigned int j;