Commit c749e3f8 authored by Patrisious Haddad's avatar Patrisious Haddad Committed by Paolo Abeni
Browse files

net/mlx5: Fix memory leak in IPsec RoCE creation



During IPsec RoCE TX creation a struct for the flow group creation is
allocated, but never freed. Free that struct once it is no longer in use.

Fixes: 22551e77 ("net/mlx5: Configure IPsec steering for egress RoCEv2 traffic")
Signed-off-by: default avatarPatrisious Haddad <phaddad@nvidia.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@nvidia.com>
Link: https://lore.kernel.org/r/a69739482cca7176d3a466f87bbf5af1250b09bb.1677056384.git.leon@kernel.org


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 44bd0394
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -162,7 +162,7 @@ int mlx5_ipsec_fs_roce_tx_create(struct mlx5_core_dev *mdev,
	if (IS_ERR(ft)) {
		err = PTR_ERR(ft);
		mlx5_core_err(mdev, "Fail to create RoCE IPsec tx ft err=%d\n", err);
		return err;
		goto free_in;
	}

	roce->ft = ft;
@@ -174,22 +174,25 @@ int mlx5_ipsec_fs_roce_tx_create(struct mlx5_core_dev *mdev,
	if (IS_ERR(g)) {
		err = PTR_ERR(g);
		mlx5_core_err(mdev, "Fail to create RoCE IPsec tx group err=%d\n", err);
		goto fail;
		goto destroy_table;
	}
	roce->g = g;

	err = ipsec_fs_roce_tx_rule_setup(mdev, roce, pol_ft);
	if (err) {
		mlx5_core_err(mdev, "Fail to create RoCE IPsec tx rules err=%d\n", err);
		goto rule_fail;
		goto destroy_group;
	}

	kvfree(in);
	return 0;

rule_fail:
destroy_group:
	mlx5_destroy_flow_group(roce->g);
fail:
destroy_table:
	mlx5_destroy_flow_table(ft);
free_in:
	kvfree(in);
	return err;
}