net/mlx5: Fix memory leak in error flow of port set buffer
authorMaher Sanalla <msanalla@nvidia.com>
Tue, 17 Jan 2023 12:54:36 +0000 (14:54 +0200)
committerSaeed Mahameed <saeedm@nvidia.com>
Wed, 8 Feb 2023 00:29:55 +0000 (16:29 -0800)
In the cited commit, shared buffer updates were added whenever
port buffer gets updated.

However, in case the shared buffer update fails, exiting early from
port_set_buffer() is performed without freeing previously-allocated memory.

Fix it by jumping to out label where memory is freed before returning
with error.

Fixes: a440030d8946 ("net/mlx5e: Update shared buffer along with device buffer changes")
Signed-off-by: Maher Sanalla <msanalla@nvidia.com>
Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/en/port_buffer.c

index 57f4b1b..7ac1ad9 100644 (file)
@@ -314,11 +314,11 @@ static int port_set_buffer(struct mlx5e_priv *priv,
        err = port_update_shared_buffer(priv->mdev, current_headroom_size,
                                        new_headroom_size);
        if (err)
-               return err;
+               goto out;
 
        err = port_update_pool_cfg(priv->mdev, port_buffer);
        if (err)
-               return err;
+               goto out;
 
        err = mlx5e_port_set_pbmc(mdev, in);
 out: