net/mlx5e: Fix access to non-existing receive queue
authorTariq Toukan <tariqt@mellanox.com>
Tue, 5 Mar 2019 14:45:09 +0000 (16:45 +0200)
committerSaeed Mahameed <saeedm@mellanox.com>
Mon, 11 Mar 2019 18:32:40 +0000 (11:32 -0700)
In case number of channels is changed while interface is down,
RSS indirection table is mistakenly not modified accordingly,
causing access to out-of-range non-existing object.

Fix by updating the RSS indireciton table also in the early
return flow of interface down.

Fixes: fb35c534b788 ("net/mlx5e: Fix NULL pointer derefernce in set channels error flow")
Fixes: bbeb53b8b2c9 ("net/mlx5e: Move RSS params to a dedicated struct")
Reported-by: Or Gerlitz <ogerlitz@mellanox.com>
Tested-by: Maria Pasechnik <mariap@mellanox.com>
Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
Reviewed-by: Eran Ben Elisha <eranbe@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c

index 0804b478ad19208604c7fc6c34c7360845f145d9..a0987cc5fe4a12af0bf0155ad8f290153898518c 100644 (file)
@@ -424,6 +424,9 @@ int mlx5e_ethtool_set_channels(struct mlx5e_priv *priv,
 
        if (!test_bit(MLX5E_STATE_OPENED, &priv->state)) {
                priv->channels.params = new_channels.params;
+               if (!netif_is_rxfh_configured(priv->netdev))
+                       mlx5e_build_default_indir_rqt(priv->rss_params.indirection_rqt,
+                                                     MLX5E_INDIR_RQT_SIZE, count);
                goto out;
        }