diff mbox series

[net,v1] net/mlx5: Fix memory leak in IPsec RoCE creation

Message ID a69739482cca7176d3a466f87bbf5af1250b09bb.1677056384.git.leon@kernel.org (mailing list archive)
State Accepted
Commit c749e3f82a15e10a798bb55f60368ee102c793cb
Delegated to: Netdev Maintainers
Headers show
Series [net,v1] net/mlx5: Fix memory leak in IPsec RoCE creation | expand

Checks

Context Check Description
netdev/tree_selection success Clearly marked for net
netdev/fixes_present success Fixes tag present in non-next series
netdev/subject_prefix success Link
netdev/cover_letter success Single patches do not need cover letters
netdev/patch_count success Link
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 0 this patch: 0
netdev/cc_maintainers success CCed 11 of 11 maintainers
netdev/build_clang success Errors and warnings before: 0 this patch: 0
netdev/module_param success Was 0 now: 0
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success Fixes tag looks correct
netdev/build_allmodconfig_warn success Errors and warnings before: 0 this patch: 0
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 37 lines checked
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0

Commit Message

Leon Romanovsky Feb. 22, 2023, 9:06 a.m. UTC
From: Patrisious Haddad <phaddad@nvidia.com>

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: 22551e77e550 ("net/mlx5: Configure IPsec steering for egress RoCEv2 traffic")
Signed-off-by: Patrisious Haddad <phaddad@nvidia.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
Changelog:
v1:
 * Changed target from net-next to net.
 * Replaced goto labels to mark what they do.
v0: https://lore.kernel.org/all/1b414ea3a92aa0d07b6261cf641445f27bc619d8.1676811549.git.leon@kernel.org
---
 .../ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

Comments

patchwork-bot+netdevbpf@kernel.org Feb. 23, 2023, 10:30 a.m. UTC | #1
Hello:

This patch was applied to netdev/net.git (master)
by Paolo Abeni <pabeni@redhat.com>:

On Wed, 22 Feb 2023 11:06:40 +0200 you wrote:
> From: Patrisious Haddad <phaddad@nvidia.com>
> 
> 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: 22551e77e550 ("net/mlx5: Configure IPsec steering for egress RoCEv2 traffic")
> Signed-off-by: Patrisious Haddad <phaddad@nvidia.com>
> Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
> 
> [...]

Here is the summary with links:
  - [net,v1] net/mlx5: Fix memory leak in IPsec RoCE creation
    https://git.kernel.org/netdev/net/c/c749e3f82a15

You are awesome, thank you!
Saeed Mahameed Feb. 23, 2023, 10:49 p.m. UTC | #2
On 23 Feb 10:30, patchwork-bot+netdevbpf@kernel.org wrote:
>Hello:
>
>This patch was applied to netdev/net.git (master)
>by Paolo Abeni <pabeni@redhat.com>:
>
>On Wed, 22 Feb 2023 11:06:40 +0200 you wrote:
>> From: Patrisious Haddad <phaddad@nvidia.com>
>>
>> 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: 22551e77e550 ("net/mlx5: Configure IPsec steering for egress RoCEv2 traffic")
>> Signed-off-by: Patrisious Haddad <phaddad@nvidia.com>
>> Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
>>
>> [...]
>
>Here is the summary with links:
>  - [net,v1] net/mlx5: Fix memory leak in IPsec RoCE creation
>    https://git.kernel.org/netdev/net/c/c749e3f82a15
>

hmm, I don't see this one in net branch, should i resubmit via my queue?
Jakub Kicinski Feb. 24, 2023, 12:14 a.m. UTC | #3
On Thu, 23 Feb 2023 14:49:09 -0800 Saeed Mahameed wrote:
> On 23 Feb 10:30, patchwork-bot+netdevbpf@kernel.org wrote:
> >Hello:
> >
> >This patch was applied to netdev/net.git (master)
> >by Paolo Abeni <pabeni@redhat.com>:
> >
> >On Wed, 22 Feb 2023 11:06:40 +0200 you wrote:  
> >> From: Patrisious Haddad <phaddad@nvidia.com>
> >>
> >> 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: 22551e77e550 ("net/mlx5: Configure IPsec steering for egress RoCEv2 traffic")
> >> Signed-off-by: Patrisious Haddad <phaddad@nvidia.com>
> >> Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
> >>
> >> [...]  
> >
> >Here is the summary with links:
> >  - [net,v1] net/mlx5: Fix memory leak in IPsec RoCE creation
> >    https://git.kernel.org/netdev/net/c/c749e3f82a15
> >  
> 
> hmm, I don't see this one in net branch, should i resubmit via my queue? 

It's there:

https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/commit/?id=c749e3f82a15e10a798bb55f60368ee102c793cb

But keep in mind that master is gone (long live main).
diff mbox series

Patch

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c b/drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
index 2c53589b765d..6e3f178d6f84 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
@@ -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;
 }