[PATCH] mm/damon: Fix memory leak in damon_sysfs_test_add_targets()

Jinjie Ruan posted 1 patch 1 month, 2 weeks ago
mm/damon/tests/sysfs-kunit.h | 1 +
1 file changed, 1 insertion(+)
[PATCH] mm/damon: Fix memory leak in damon_sysfs_test_add_targets()
Posted by Jinjie Ruan 1 month, 2 weeks ago
The sysfs_target->regions allocated in damon_sysfs_regions_alloc()
is not freed in damon_sysfs_test_add_targets(), which cause the following
memory leak, free it to fix it.

	unreferenced object 0xffffff80c2a8db80 (size 96):
	  comm "kunit_try_catch", pid 187, jiffies 4294894363
	  hex dump (first 32 bytes):
	    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
	    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
	  backtrace (crc 0):
	    [<0000000001e3714d>] kmemleak_alloc+0x34/0x40
	    [<000000008e6835c1>] __kmalloc_cache_noprof+0x26c/0x2f4
	    [<000000001286d9f8>] damon_sysfs_test_add_targets+0x1cc/0x738
	    [<0000000032ef8f77>] kunit_try_run_case+0x13c/0x3ac
	    [<00000000f3edea23>] kunit_generic_run_threadfn_adapter+0x80/0xec
	    [<00000000adf936cf>] kthread+0x2e8/0x374
	    [<0000000041bb1628>] ret_from_fork+0x10/0x20

Cc: stable@vger.kernel.org
Fixes: b8ee5575f763 ("mm/damon/sysfs-test: add a unit test for damon_sysfs_set_targets()")
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 mm/damon/tests/sysfs-kunit.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/mm/damon/tests/sysfs-kunit.h b/mm/damon/tests/sysfs-kunit.h
index 1c9b596057a7..7b5c7b307da9 100644
--- a/mm/damon/tests/sysfs-kunit.h
+++ b/mm/damon/tests/sysfs-kunit.h
@@ -67,6 +67,7 @@ static void damon_sysfs_test_add_targets(struct kunit *test)
 	damon_destroy_ctx(ctx);
 	kfree(sysfs_targets->targets_arr);
 	kfree(sysfs_targets);
+	kfree(sysfs_target->regions);
 	kfree(sysfs_target);
 }
 
-- 
2.34.1
Re: [PATCH] mm/damon: Fix memory leak in damon_sysfs_test_add_targets()
Posted by SeongJae Park 1 month, 2 weeks ago
Hi Jinjie,

On Thu, 10 Oct 2024 20:53:23 +0800 Jinjie Ruan <ruanjinjie@huawei.com> wrote:

> The sysfs_target->regions allocated in damon_sysfs_regions_alloc()
> is not freed in damon_sysfs_test_add_targets(), which cause the following
> memory leak, free it to fix it.
> 
> 	unreferenced object 0xffffff80c2a8db80 (size 96):
> 	  comm "kunit_try_catch", pid 187, jiffies 4294894363
> 	  hex dump (first 32 bytes):
> 	    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
> 	    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
> 	  backtrace (crc 0):
> 	    [<0000000001e3714d>] kmemleak_alloc+0x34/0x40
> 	    [<000000008e6835c1>] __kmalloc_cache_noprof+0x26c/0x2f4
> 	    [<000000001286d9f8>] damon_sysfs_test_add_targets+0x1cc/0x738
> 	    [<0000000032ef8f77>] kunit_try_run_case+0x13c/0x3ac
> 	    [<00000000f3edea23>] kunit_generic_run_threadfn_adapter+0x80/0xec
> 	    [<00000000adf936cf>] kthread+0x2e8/0x374
> 	    [<0000000041bb1628>] ret_from_fork+0x10/0x20

Thank you for catching this issue and posting this fix!

> 
> Cc: stable@vger.kernel.org
> Fixes: b8ee5575f763 ("mm/damon/sysfs-test: add a unit test for damon_sysfs_set_targets()")
> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
> ---
>  mm/damon/tests/sysfs-kunit.h | 1 +
>  1 file changed, 1 insertion(+)

Can we update the subject prefix to "mm/damon/tests/sysfs-kunit:"?  I think
that will help readers understanding the change more easily.

Other than that,

Reviewed-by: SeongJae Park <sj@kernel.org>


Thanks,
SJ

> 
> diff --git a/mm/damon/tests/sysfs-kunit.h b/mm/damon/tests/sysfs-kunit.h
> index 1c9b596057a7..7b5c7b307da9 100644
> --- a/mm/damon/tests/sysfs-kunit.h
> +++ b/mm/damon/tests/sysfs-kunit.h
> @@ -67,6 +67,7 @@ static void damon_sysfs_test_add_targets(struct kunit *test)
>  	damon_destroy_ctx(ctx);
>  	kfree(sysfs_targets->targets_arr);
>  	kfree(sysfs_targets);
> +	kfree(sysfs_target->regions);
>  	kfree(sysfs_target);
>  }
>  
> -- 
> 2.34.1