From eff7f7e5f5533875d77c1876c5e5faf047b907a3 Mon Sep 17 00:00:00 2001 From: Moshe Lazer Date: Sun, 16 Jun 2013 11:04:17 +0300 Subject: [PATCH] mlx4_core: resolvs kernel panic when connectx_port_config fail to set ports When changing ports configutation (e.g. from ib,ib to eth,eth) the device is disconnected from interfaces and catas error lists than we change ports config and reconnecting the device. In case ports config changing fails the device left disconnected. If we try again to configure the ports the driver retry to disconnect the device form its lists and crashes in list_del function. To aviod this the list_del replaced by list_del_init (to allow redeleting the device). Signed-off-by: Moshe Lazer (Ported from Mellanox OFED 2.4) Signed-off-by: Mukesh Kacker --- drivers/net/ethernet/mellanox/mlx4/intf.c | 2 +- drivers/net/ethernet/mellanox/mlx4/main.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/mellanox/mlx4/intf.c b/drivers/net/ethernet/mellanox/mlx4/intf.c index 6fce58718837..2fdf685f2df5 100644 --- a/drivers/net/ethernet/mellanox/mlx4/intf.c +++ b/drivers/net/ethernet/mellanox/mlx4/intf.c @@ -214,7 +214,7 @@ void mlx4_unregister_device(struct mlx4_dev *dev) list_for_each_entry(intf, &intf_list, list) mlx4_remove_device(intf, priv); - list_del(&priv->dev_list); + list_del_init(&priv->dev_list); dev->persist->interface_state &= ~MLX4_INTERFACE_STATE_UP; mutex_unlock(&intf_mutex); diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c index 49f154375cbc..347779bf5c60 100644 --- a/drivers/net/ethernet/mellanox/mlx4/main.c +++ b/drivers/net/ethernet/mellanox/mlx4/main.c @@ -2894,6 +2894,7 @@ static int mlx4_load_one(struct pci_dev *pdev, int pci_dev_data, dev = &priv->dev; + INIT_LIST_HEAD(&priv->dev_list); INIT_LIST_HEAD(&priv->ctx_list); spin_lock_init(&priv->ctx_lock); -- 2.50.1