net/mlx5: fix init with zero Rx queue
authorDekel Peled <dekelp@mellanox.com>
Sun, 5 May 2019 11:44:24 +0000 (14:44 +0300)
committerFerruh Yigit <ferruh.yigit@intel.com>
Wed, 8 May 2019 15:29:31 +0000 (17:29 +0200)
commit09ba4c58e510b58527fe957d9ca5aabf43b48a87
treed4c5105d9b6ad97eca353b445e4278f889590268
parentc387effde8fe244f70a937a66f63dd82d9a79f29
net/mlx5: fix init with zero Rx queue

Recent patch [1] added, at the end of mlx5_dev_configure(), a call to
mlx5_proc_priv_init(), initializing process_private data of eth_dev.
This call is not reached if PMD is started with zero Rx queues.
In this case mlx5_dev_configure() returns earlier due to the check:
if (rxqs_n == priv->rxqs_n)
return 0;
In such a scenario, later references to uninitialized process_private
data will result in segmentation fault.
For example see in function txq_uar_init().

This patch changes the check logic. The following code is executed
if (rxqs_n != priv->rxqs_n), and skipped otherwise.
Function mlx5_proc_priv_init() is always invoked, to ensure
process_private data is initialized.

[1] http://patches.dpdk.org/patch/52629/

Fixes: 120dc4a7dcd3 ("net/mlx5: remove device register remap")
Cc: stable@dpdk.org
Signed-off-by: Dekel Peled <dekelp@mellanox.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
drivers/net/mlx5/mlx5_ethdev.c