]> git.baikalelectronics.ru Git - kernel.git/commit
net/mlx4_core: Do not access comm channel if it has not yet been initialized
authorJack Morgenstein <jackm@dev.mellanox.co.il>
Thu, 27 Oct 2016 13:27:19 +0000 (16:27 +0300)
committerDavid S. Miller <davem@davemloft.net>
Sat, 29 Oct 2016 20:23:48 +0000 (16:23 -0400)
commitf769f453944739fe1cb1c81d3e60c4727c52c744
tree78c230e81dbf9033cb603e9a6b870d095208ef70
parentcc7fdd277b328760c415b586fd9c16574afd5e4a
net/mlx4_core: Do not access comm channel if it has not yet been initialized

In the Hypervisor, there are several FW commands which are invoked
before the comm channel is initialized (in mlx4_multi_func_init).
These include MOD_STAT_CONFIG, QUERY_DEV_CAP, INIT_HCA, and others.

If any of these commands fails, say with a timeout, the Hypervisor
driver enters the internal error reset flow. In this flow, the driver
attempts to notify all slaves via the comm channel that an internal error
has occurred.

Since the comm channel has not yet been initialized (i.e., mapped via
ioremap), this will cause dereferencing a NULL pointer.

To fix this, do not access the comm channel in the internal error flow
if it has not yet been initialized.

Fixes: ff15addba7bf ("net/mlx4_core: Enable device recovery flow with SRIOV")
Fixes: bfa3f2377fe3 ("mlx4_core: Modify driver initialization flow to accommodate SRIOV for Ethernet")
Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx4/cmd.c