net/mlx4_en: Fix an error handling path in 'mlx4_en_init_netdev()'
[ Upstream commit a577d868b768a3baf16cdd4841ab8cfb165521d6 ] 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: 67f8b1dcb9ee ("net/mlx4_en: Refactor the XDP forwarding rings scheme") Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Reviewed-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
6b10014800
commit
2213a18303
@ -3318,12 +3318,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;
|
||||
}
|
||||
@ -3576,11 +3575,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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user