[1/1] net/mlx5: fix memory leak when releasing a drop action

Message ID 004c86e8ddf05bb9d3df77580357c4eca852c013.1659177063.git.wangyunjian@huawei.com (mailing list archive)
State Superseded, archived
Delegated to: Raslan Darawsheh
Headers
Series [1/1] net/mlx5: fix memory leak when releasing a drop action |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/github-robot: build success github build: passed
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-aarch64-unit-testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-intel-Performance success Performance Testing PASS

Commit Message

Yunjian Wang July 30, 2022, 10:40 a.m. UTC
  When the memory for hrxq->action is allocated in mlx5_devx_hrxq_new().
But it was not being freed when the drop action was released in
mlx5_devx_drop_action_destroy(). These cause a memory leak.

Fixes: bc5bee028ebc ("net/mlx5: create drop queue using DevX")
Cc: stable@dpdk.org

Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
---
 drivers/net/mlx5/mlx5_devx.c | 6 ++++++
 1 file changed, 6 insertions(+)
  

Comments

Matan Azrad July 31, 2022, 7:02 a.m. UTC | #1
Hi Yunjian

From: Yunjian Wang
> When the memory for hrxq->action is allocated in mlx5_devx_hrxq_new().

Memory -> resources .. are

> But it was not being freed when the drop action was released in
> mlx5_devx_drop_action_destroy(). These cause a memory leak.
> 
> Fixes: bc5bee028ebc ("net/mlx5: create drop queue using DevX")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
> ---
>  drivers/net/mlx5/mlx5_devx.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/net/mlx5/mlx5_devx.c b/drivers/net/mlx5/mlx5_devx.c
> index 6886ae1f22..171ce5c08a 100644
> --- a/drivers/net/mlx5/mlx5_devx.c
> +++ b/drivers/net/mlx5/mlx5_devx.c
> @@ -1097,6 +1097,12 @@ mlx5_devx_drop_action_destroy(struct
> rte_eth_dev *dev)
>                 mlx5_devx_ind_table_destroy(hrxq->ind_table);
>         if (priv->drop_queue.rxq->devx_rq.rq != NULL)
>                 mlx5_rxq_devx_obj_drop_release(dev);
> +#ifdef HAVE_IBV_FLOW_DV_SUPPORT
> +       if (hrxq->action != NULL) {
> +               mlx5_glue->destroy_flow_action(hrxq->action);
> +               hrxq->action = NULL;
> +       }
> +#endif

Good catch for the leak.
I think the issue is in mlx5_devx_tir_destroy and not related only to the drop queue management.
So the fix should be for the mlx5_devx_tir_destroy. What do you think?



>  }
> 
>  /**
> --
> 2.27.0
  
Yunjian Wang Aug. 3, 2022, 1:23 p.m. UTC | #2
> -----Original Message-----
> From: Matan Azrad [mailto:matan@nvidia.com]
> Sent: Sunday, July 31, 2022 3:02 PM
> To: wangyunjian <wangyunjian@huawei.com>; dev@dpdk.org
> Cc: Slava Ovsiienko <viacheslavo@nvidia.com>; Dmitry Kozlyuk
> <dkozlyuk@nvidia.com>; Huangshaozhang <huangshaozhang@huawei.com>;
> stable@dpdk.org
> Subject: RE: [dpdk-dev] [PATCH 1/1] net/mlx5: fix memory leak when releasing a
> drop action
> 
> Hi Yunjian
> 
> From: Yunjian Wang
> > When the memory for hrxq->action is allocated in mlx5_devx_hrxq_new().
> 
> Memory -> resources .. are
> 
> > But it was not being freed when the drop action was released in
> > mlx5_devx_drop_action_destroy(). These cause a memory leak.
> >
> > Fixes: bc5bee028ebc ("net/mlx5: create drop queue using DevX")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
> > ---
> >  drivers/net/mlx5/mlx5_devx.c | 6 ++++++
> >  1 file changed, 6 insertions(+)
> >
> > diff --git a/drivers/net/mlx5/mlx5_devx.c
> > b/drivers/net/mlx5/mlx5_devx.c index 6886ae1f22..171ce5c08a 100644
> > --- a/drivers/net/mlx5/mlx5_devx.c
> > +++ b/drivers/net/mlx5/mlx5_devx.c
> > @@ -1097,6 +1097,12 @@ mlx5_devx_drop_action_destroy(struct
> > rte_eth_dev *dev)
> >                 mlx5_devx_ind_table_destroy(hrxq->ind_table);
> >         if (priv->drop_queue.rxq->devx_rq.rq != NULL)
> >                 mlx5_rxq_devx_obj_drop_release(dev);
> > +#ifdef HAVE_IBV_FLOW_DV_SUPPORT
> > +       if (hrxq->action != NULL) {
> > +               mlx5_glue->destroy_flow_action(hrxq->action);
> > +               hrxq->action = NULL;
> > +       }
> > +#endif
> 
> Good catch for the leak.
> I think the issue is in mlx5_devx_tir_destroy and not related only to the drop
> queue management.
> So the fix should be for the mlx5_devx_tir_destroy. What do you think?

Agree, I fix it. 
https://patchwork.dpdk.org/project/dpdk/patch/ba20dc6b94576f29cd2c9aa10672c700b20ce819.1659526016.git.wangyunjian@huawei.com/

Thanks.
> 
> 
> 
> >  }
> >
> >  /**
> > --
> > 2.27.0
  

Patch

diff --git a/drivers/net/mlx5/mlx5_devx.c b/drivers/net/mlx5/mlx5_devx.c
index 6886ae1f22..171ce5c08a 100644
--- a/drivers/net/mlx5/mlx5_devx.c
+++ b/drivers/net/mlx5/mlx5_devx.c
@@ -1097,6 +1097,12 @@  mlx5_devx_drop_action_destroy(struct rte_eth_dev *dev)
 		mlx5_devx_ind_table_destroy(hrxq->ind_table);
 	if (priv->drop_queue.rxq->devx_rq.rq != NULL)
 		mlx5_rxq_devx_obj_drop_release(dev);
+#ifdef HAVE_IBV_FLOW_DV_SUPPORT
+	if (hrxq->action != NULL) {
+		mlx5_glue->destroy_flow_action(hrxq->action);
+		hrxq->action = NULL;
+	}
+#endif
 }
 
 /**