diff options
| author | David S. Miller <davem@davemloft.net> | 2014-11-06 16:40:47 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2014-11-06 16:40:47 -0500 |
| commit | c811906726ee28b638284b1965d728a9d3fe8d7d (patch) | |
| tree | 7662a703252362ffbca459f891a34f73e6140c8c | |
| parent | b31f65fb4383a49bdcfa465176754b37e44e1e17 (diff) | |
| parent | 364d1798efdf13c7f2b9d902228adf8e84f1d963 (diff) | |
Merge branch 'mlx5-net'
Eli Cohen says:
====================
mlx5_core fixes for 3.18
the following two patches fix races to could lead to kernel panic in some cases.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | drivers/net/ethernet/mellanox/mlx5/core/eq.c | 7 | ||||
| -rw-r--r-- | drivers/net/ethernet/mellanox/mlx5/core/main.c | 4 |
2 files changed, 5 insertions, 6 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eq.c b/drivers/net/ethernet/mellanox/mlx5/core/eq.c index a278238a2db6..ad2c96a02a53 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/eq.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/eq.c | |||
| @@ -374,15 +374,14 @@ int mlx5_create_map_eq(struct mlx5_core_dev *dev, struct mlx5_eq *eq, u8 vecidx, | |||
| 374 | snprintf(eq->name, MLX5_MAX_EQ_NAME, "%s@pci:%s", | 374 | snprintf(eq->name, MLX5_MAX_EQ_NAME, "%s@pci:%s", |
| 375 | name, pci_name(dev->pdev)); | 375 | name, pci_name(dev->pdev)); |
| 376 | eq->eqn = out.eq_number; | 376 | eq->eqn = out.eq_number; |
| 377 | eq->irqn = vecidx; | ||
| 378 | eq->dev = dev; | ||
| 379 | eq->doorbell = uar->map + MLX5_EQ_DOORBEL_OFFSET; | ||
| 377 | err = request_irq(table->msix_arr[vecidx].vector, mlx5_msix_handler, 0, | 380 | err = request_irq(table->msix_arr[vecidx].vector, mlx5_msix_handler, 0, |
| 378 | eq->name, eq); | 381 | eq->name, eq); |
| 379 | if (err) | 382 | if (err) |
| 380 | goto err_eq; | 383 | goto err_eq; |
| 381 | 384 | ||
| 382 | eq->irqn = vecidx; | ||
| 383 | eq->dev = dev; | ||
| 384 | eq->doorbell = uar->map + MLX5_EQ_DOORBEL_OFFSET; | ||
| 385 | |||
| 386 | err = mlx5_debug_eq_add(dev, eq); | 385 | err = mlx5_debug_eq_add(dev, eq); |
| 387 | if (err) | 386 | if (err) |
| 388 | goto err_irq; | 387 | goto err_irq; |
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c index 3d8e8e489b2d..71b10b210792 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c | |||
| @@ -864,14 +864,14 @@ static int init_one(struct pci_dev *pdev, | |||
| 864 | dev->profile = &profile[prof_sel]; | 864 | dev->profile = &profile[prof_sel]; |
| 865 | dev->event = mlx5_core_event; | 865 | dev->event = mlx5_core_event; |
| 866 | 866 | ||
| 867 | INIT_LIST_HEAD(&priv->ctx_list); | ||
| 868 | spin_lock_init(&priv->ctx_lock); | ||
| 867 | err = mlx5_dev_init(dev, pdev); | 869 | err = mlx5_dev_init(dev, pdev); |
| 868 | if (err) { | 870 | if (err) { |
| 869 | dev_err(&pdev->dev, "mlx5_dev_init failed %d\n", err); | 871 | dev_err(&pdev->dev, "mlx5_dev_init failed %d\n", err); |
| 870 | goto out; | 872 | goto out; |
| 871 | } | 873 | } |
| 872 | 874 | ||
| 873 | INIT_LIST_HEAD(&priv->ctx_list); | ||
| 874 | spin_lock_init(&priv->ctx_lock); | ||
| 875 | err = mlx5_register_device(dev); | 875 | err = mlx5_register_device(dev); |
| 876 | if (err) { | 876 | if (err) { |
| 877 | dev_err(&pdev->dev, "mlx5_register_device failed %d\n", err); | 877 | dev_err(&pdev->dev, "mlx5_register_device failed %d\n", err); |
