[PATCH net-next] pds_core: fix memory leak in pdsc_debugfs_add_qcq()

Abdun Nihaal posted 1 patch 10 months ago
drivers/net/ethernet/amd/pds_core/debugfs.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
[PATCH net-next] pds_core: fix memory leak in pdsc_debugfs_add_qcq()
Posted by Abdun Nihaal 10 months ago
The memory allocated for intr_ctrl_regset, which is passed to
debugfs_create_regset32() may not be cleaned up when the driver is
removed. Fix that by using device managed allocation for it.

Fixes: 45d76f492938 ("pds_core: set up device and adminq")
Signed-off-by: Abdun Nihaal <abdun.nihaal@gmail.com>
---
 drivers/net/ethernet/amd/pds_core/debugfs.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/amd/pds_core/debugfs.c b/drivers/net/ethernet/amd/pds_core/debugfs.c
index ac37a4e738ae..04c5e3abd8d7 100644
--- a/drivers/net/ethernet/amd/pds_core/debugfs.c
+++ b/drivers/net/ethernet/amd/pds_core/debugfs.c
@@ -154,8 +154,9 @@ void pdsc_debugfs_add_qcq(struct pdsc *pdsc, struct pdsc_qcq *qcq)
 		debugfs_create_u32("index", 0400, intr_dentry, &intr->index);
 		debugfs_create_u32("vector", 0400, intr_dentry, &intr->vector);
 
-		intr_ctrl_regset = kzalloc(sizeof(*intr_ctrl_regset),
-					   GFP_KERNEL);
+		intr_ctrl_regset = devm_kzalloc(pdsc->dev,
+						sizeof(*intr_ctrl_regset),
+						GFP_KERNEL);
 		if (!intr_ctrl_regset)
 			return;
 		intr_ctrl_regset->regs = intr_ctrl_regs;
-- 
2.47.2
Re: [PATCH net-next] pds_core: fix memory leak in pdsc_debugfs_add_qcq()
Posted by Nelson, Shannon 10 months ago
On 4/8/2025 10:44 PM, Abdun Nihaal wrote:
> 
> The memory allocated for intr_ctrl_regset, which is passed to
> debugfs_create_regset32() may not be cleaned up when the driver is
> removed. Fix that by using device managed allocation for it.
> 
> Fixes: 45d76f492938 ("pds_core: set up device and adminq")
> Signed-off-by: Abdun Nihaal <abdun.nihaal@gmail.com>

Thanks!

Reviewed-by: Shannon Nelson <shannon.nelson@amd.com>

> ---
>   drivers/net/ethernet/amd/pds_core/debugfs.c | 5 +++--
>   1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/ethernet/amd/pds_core/debugfs.c b/drivers/net/ethernet/amd/pds_core/debugfs.c
> index ac37a4e738ae..04c5e3abd8d7 100644
> --- a/drivers/net/ethernet/amd/pds_core/debugfs.c
> +++ b/drivers/net/ethernet/amd/pds_core/debugfs.c
> @@ -154,8 +154,9 @@ void pdsc_debugfs_add_qcq(struct pdsc *pdsc, struct pdsc_qcq *qcq)
>                  debugfs_create_u32("index", 0400, intr_dentry, &intr->index);
>                  debugfs_create_u32("vector", 0400, intr_dentry, &intr->vector);
> 
> -               intr_ctrl_regset = kzalloc(sizeof(*intr_ctrl_regset),
> -                                          GFP_KERNEL);
> +               intr_ctrl_regset = devm_kzalloc(pdsc->dev,
> +                                               sizeof(*intr_ctrl_regset),
> +                                               GFP_KERNEL);
>                  if (!intr_ctrl_regset)
>                          return;
>                  intr_ctrl_regset->regs = intr_ctrl_regs;
> --
> 2.47.2
>
Re: [PATCH net-next] pds_core: fix memory leak in pdsc_debugfs_add_qcq()
Posted by Michal Swiatkowski 10 months ago
On Wed, Apr 09, 2025 at 11:14:48AM +0530, Abdun Nihaal wrote:
> The memory allocated for intr_ctrl_regset, which is passed to
> debugfs_create_regset32() may not be cleaned up when the driver is
> removed. Fix that by using device managed allocation for it.
> 
> Fixes: 45d76f492938 ("pds_core: set up device and adminq")
> Signed-off-by: Abdun Nihaal <abdun.nihaal@gmail.com>
> ---
>  drivers/net/ethernet/amd/pds_core/debugfs.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/ethernet/amd/pds_core/debugfs.c b/drivers/net/ethernet/amd/pds_core/debugfs.c
> index ac37a4e738ae..04c5e3abd8d7 100644
> --- a/drivers/net/ethernet/amd/pds_core/debugfs.c
> +++ b/drivers/net/ethernet/amd/pds_core/debugfs.c
> @@ -154,8 +154,9 @@ void pdsc_debugfs_add_qcq(struct pdsc *pdsc, struct pdsc_qcq *qcq)
>  		debugfs_create_u32("index", 0400, intr_dentry, &intr->index);
>  		debugfs_create_u32("vector", 0400, intr_dentry, &intr->vector);
>  
> -		intr_ctrl_regset = kzalloc(sizeof(*intr_ctrl_regset),
> -					   GFP_KERNEL);
> +		intr_ctrl_regset = devm_kzalloc(pdsc->dev,
> +						sizeof(*intr_ctrl_regset),
> +						GFP_KERNEL);
>  		if (!intr_ctrl_regset)
>  			return;
>  		intr_ctrl_regset->regs = intr_ctrl_regs;

In ionic driver it is also devm_ version, thanks for catching that.
Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>

For future submission remember to set correct target (net instead of
net-next as it is a fix)

Thanks,
Michal

> -- 
> 2.47.2