Skip to content

Commit 47bc94b

Browse files
Huy NguyenSaeed Mahameed
authored andcommitted
net/mlx5: Check for error in mlx5_attach_interface
Currently, mlx5_attach_interface does not check for error after calling intf->attach or intf->add. When these two calls fails, the client is not initialized and will cause issues such as kernel panic on invalid address in the teardown path (mlx5_detach_interface) Fixes: 737a234 ("net/mlx5: Introduce attach/detach to interface API") Signed-off-by: Huy Nguyen <[email protected]> Signed-off-by: Saeed Mahameed <[email protected]>
1 parent df7ddb2 commit 47bc94b

File tree

1 file changed

+10
-5
lines changed
  • drivers/net/ethernet/mellanox/mlx5/core

1 file changed

+10
-5
lines changed

drivers/net/ethernet/mellanox/mlx5/core/dev.c

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,11 @@ void mlx5_add_device(struct mlx5_interface *intf, struct mlx5_priv *priv)
132132
delayed_event_start(priv);
133133

134134
dev_ctx->context = intf->add(dev);
135-
set_bit(MLX5_INTERFACE_ADDED, &dev_ctx->state);
136-
if (intf->attach)
137-
set_bit(MLX5_INTERFACE_ATTACHED, &dev_ctx->state);
138-
139135
if (dev_ctx->context) {
136+
set_bit(MLX5_INTERFACE_ADDED, &dev_ctx->state);
137+
if (intf->attach)
138+
set_bit(MLX5_INTERFACE_ATTACHED, &dev_ctx->state);
139+
140140
spin_lock_irq(&priv->ctx_lock);
141141
list_add_tail(&dev_ctx->list, &priv->ctx_list);
142142

@@ -211,12 +211,17 @@ static void mlx5_attach_interface(struct mlx5_interface *intf, struct mlx5_priv
211211
if (intf->attach) {
212212
if (test_bit(MLX5_INTERFACE_ATTACHED, &dev_ctx->state))
213213
goto out;
214-
intf->attach(dev, dev_ctx->context);
214+
if (intf->attach(dev, dev_ctx->context))
215+
goto out;
216+
215217
set_bit(MLX5_INTERFACE_ATTACHED, &dev_ctx->state);
216218
} else {
217219
if (test_bit(MLX5_INTERFACE_ADDED, &dev_ctx->state))
218220
goto out;
219221
dev_ctx->context = intf->add(dev);
222+
if (!dev_ctx->context)
223+
goto out;
224+
220225
set_bit(MLX5_INTERFACE_ADDED, &dev_ctx->state);
221226
}
222227

0 commit comments

Comments
 (0)