net/mlx4_en: initialize cmd.context_lock spinlock earlier
authorEric Dumazet <edumazet@google.com>
Mon, 13 Jun 2016 14:50:25 +0000 (07:50 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 15 Jun 2016 19:16:30 +0000 (12:16 -0700)
commit0c5ddb51e8f7be7170600f95a4ea92e5a32afad8
treea99bf1c6db2c7fdbd535102c8668070b45d01425
parent61e0979a497b07f5a82f3050e37ecc7093e2971d
net/mlx4_en: initialize cmd.context_lock spinlock earlier

Maciej Żenczykowski reported lockdep warning a spinlock
was not registered before being held in mlx4_cmd_wake_completions()

cmd.context_lock initialization is not at the right place.

1) mlx4_cmd_use_events() can be called multiple times.
   Calling spin_lock_init() on a live spinlock can lead
   to hangs.

2) mlx4_cmd_wake_completions() can be called while lock
   has not been initialized.
   Lockdep complains, and current logic is not race prone.

It seems better to move the initialization earlier in
mlx4_load_one()

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Maciej Żenczykowski <maze@google.com>
Cc: Eugenia Emantayev <eugenia@mellanox.com>
Cc: Tariq Toukan <tariqt@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx4/cmd.c
drivers/net/ethernet/mellanox/mlx4/main.c