Message ID | 20180510070604.19635-1-christophe.jaillet@wanadoo.fr (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
On 10/05/2018 10:06 AM, Christophe JAILLET wrote: > 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> > --- > v1 -> v2 : rewrite the fix as explained by Tariq Toukan > (this 2nd version may have been posted twice, once without the > v2 tag. PLease ignore the first one) > --- > > drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 8 +------- > 1 file changed, 1 insertion(+), 7 deletions(-) > > diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c > index e0adac4a9a19..9670b33fc9b1 100644 > --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c > +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c > @@ -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; > Reviewed-by: Tariq Toukan <tariqt@mellanox.com> Thanks Christophe. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Date: Thu, 10 May 2018 09:06:04 +0200 > 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> Applied and queued up for -stable, thanks. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c index e0adac4a9a19..9670b33fc9b1 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c @@ -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;
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> --- v1 -> v2 : rewrite the fix as explained by Tariq Toukan (this 2nd version may have been posted twice, once without the v2 tag. PLease ignore the first one) --- drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-)