From: Moshe Lazer Date: Sun, 16 Jun 2013 08:04:17 +0000 (+0300) Subject: mlx4_core: resolvs kernel panic when connectx_port_config fail to set ports X-Git-Tag: v4.1.12-92~293^2~1^2~73 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=eff7f7e5f5533875d77c1876c5e5faf047b907a3;p=users%2Fjedix%2Flinux-maple.git 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 --- diff --git a/drivers/net/ethernet/mellanox/mlx4/intf.c b/drivers/net/ethernet/mellanox/mlx4/intf.c index 6fce587188372..2fdf685f2df59 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 49f154375cbc6..347779bf5c60f 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);