Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a577d868 authored by Christophe JAILLET's avatar Christophe JAILLET Committed by David S. Miller
Browse files

net/mlx4_en: Fix an error handling path in 'mlx4_en_init_netdev()'



If an error occurs, 'mlx4_en_destroy_netdev()' is called.
It then calls 'mlx4_en_free_resources()' which does the needed resources
cleanup.

So, doing some explicit kfree in the error handling path would lead to
some double kfree.

Simplify code to avoid such a case.

Fixes: 67f8b1dc ("net/mlx4_en: Refactor the XDP forwarding rings scheme")
Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: default avatarTariq Toukan <tariqt@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 97f3efb6
Loading
Loading
Loading
Loading
+1 −7
Original line number Diff line number Diff line
@@ -3324,12 +3324,11 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
					   MAX_TX_RINGS, GFP_KERNEL);
		if (!priv->tx_ring[t]) {
			err = -ENOMEM;
			goto err_free_tx;
			goto out;
		}
		priv->tx_cq[t] = kzalloc(sizeof(struct mlx4_en_cq *) *
					 MAX_TX_RINGS, GFP_KERNEL);
		if (!priv->tx_cq[t]) {
			kfree(priv->tx_ring[t]);
			err = -ENOMEM;
			goto out;
		}
@@ -3582,11 +3581,6 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,

	return 0;

err_free_tx:
	while (t--) {
		kfree(priv->tx_ring[t]);
		kfree(priv->tx_cq[t]);
	}
out:
	mlx4_en_destroy_netdev(dev);
	return err;