diff options
author | Eric Dumazet <edumazet@google.com> | 2016-06-13 07:50:25 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-06-15 12:16:30 -0700 |
commit | 0c5ddb51e8f7be7170600f95a4ea92e5a32afad8 (patch) | |
tree | a99bf1c6db2c7fdbd535102c8668070b45d01425 /drivers/net/ethernet/mellanox/mlx4/main.c | |
parent | 61e0979a497b07f5a82f3050e37ecc7093e2971d (diff) | |
download | op-kernel-dev-0c5ddb51e8f7be7170600f95a4ea92e5a32afad8.zip op-kernel-dev-0c5ddb51e8f7be7170600f95a4ea92e5a32afad8.tar.gz |
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>
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlx4/main.c')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/main.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c index 12c77a7..372ebfa 100644 --- a/drivers/net/ethernet/mellanox/mlx4/main.c +++ b/drivers/net/ethernet/mellanox/mlx4/main.c @@ -3222,6 +3222,7 @@ static int mlx4_load_one(struct pci_dev *pdev, int pci_dev_data, INIT_LIST_HEAD(&priv->pgdir_list); mutex_init(&priv->pgdir_mutex); + spin_lock_init(&priv->cmd.context_lock); INIT_LIST_HEAD(&priv->bf_list); mutex_init(&priv->bf_mutex); |