mlx4_en: Fix crash upon device initialization error
authorAlexander Guller <alexg@mellanox.com>
Sun, 9 Oct 2011 05:29:35 +0000 (05:29 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 10 Oct 2011 03:42:58 +0000 (23:42 -0400)
Netdevice was being freed without being unregistered first if
mlx4_SET_PORT_general or mlx4_INIT_PORT failed.

Signed-off-by: Alexander Guller <alexg@mellanox.co.il>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx4/en_netdev.c

index b82db4a46df04ed041ecdccba1e8bce5ce77d255..c4c4be426921eb5e101f5dc6b427863b27b07af4 100644 (file)
@@ -1097,6 +1097,7 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
                en_err(priv, "Netdev registration failed for port %d\n", port);
                goto out;
        }
+       priv->registered = 1;
 
        en_warn(priv, "Using %d TX rings\n", prof->tx_ring_num);
        en_warn(priv, "Using %d RX rings\n", prof->rx_ring_num);
@@ -1118,7 +1119,6 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
                en_err(priv, "Failed Initializing port\n");
                goto out;
        }
-       priv->registered = 1;
        mlx4_en_set_default_moderation(priv);
        queue_delayed_work(mdev->workqueue, &priv->stats_task, STATS_DELAY);
        return 0;