net/mlx4_core: Fix GEN_EQE accessing uninitialixed mutex
authorJack Morgenstein <jackm@dev.mellanox.co.il>
Tue, 24 Mar 2015 13:18:39 +0000 (15:18 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 24 Mar 2015 19:22:52 +0000 (15:22 -0400)
commitbffb023ad2d44c0cfa8142ad8247391b32000998
treed565e26d41d3039f8af40d2316025d99af247d10
parente5eda89d97ec256ba14e7e861387cc0468259c18
net/mlx4_core: Fix GEN_EQE accessing uninitialixed mutex

We occasionally see in procedure mlx4_GEN_EQE that the driver tries
to grab an uninitialized mutex.

This can occur in only one of two ways:
1. We are trying to generate an async event on an uninitialized slave.
2. We are trying to generate an async event on an illegal slave number
   ( < 0 or > persist->num_vfs) or an inactive slave.

To deal with #1: move the mutex initialization from specific slave init
sequence in procedure mlx_master_do_cmd to mlx4_multi_func_init() (so that
the mutex is always initialized for all slaves).

To deal with #2: check in procedure mlx4_GEN_EQE that the slave number
provided is in the proper range and that the slave is active.

Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx4/cmd.c
drivers/net/ethernet/mellanox/mlx4/eq.c
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c