diff mbox series

[v3] damon/sysfs: Fix possible memleak on damon_sysfs_add_target.

Message ID 20220925234327.26345-1-ppbuk5246@gmail.com (mailing list archive)
State New
Headers show
Series [v3] damon/sysfs: Fix possible memleak on damon_sysfs_add_target. | expand

Commit Message

Yun Levi Sept. 25, 2022, 11:43 p.m. UTC
When damon_sysfs_add_target couldn't find proper task,
New allocated damon_target structure isn't registered yet,
So, it's impossible to free new allocated one by
damon_sysfs_destroy_targets.

By calling daemon_add_target as soon as allocating new target, Fix this
possible memory leak.

Signed-off-by: Levi Yun <ppbuk5246@gmail.com>
Fixes:74bd8b7d2f8e7
Cc: <stable@vger.kernel.org>
---
 mm/damon/sysfs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

SeongJae Park Sept. 26, 2022, 3:59 p.m. UTC | #1
Hi Levi,

On Mon, 26 Sep 2022 08:43:27 +0900 Levi Yun <ppbuk5246@gmail.com> wrote:

> When damon_sysfs_add_target couldn't find proper task,
> New allocated damon_target structure isn't registered yet,
> So, it's impossible to free new allocated one by
> damon_sysfs_destroy_targets.
> 
> By calling daemon_add_target as soon as allocating new target, Fix this
> possible memory leak.
> 
> Signed-off-by: Levi Yun <ppbuk5246@gmail.com>
> Fixes:74bd8b7d2f8e7

The commit is indeed the last one which touched the code, but the bug was
introduced earlier than that, by commit a61ea561c871 ("mm/damon/sysfs: link
DAMON for virtual address spaces monitoring").

Also, let's add one space before the commit hash, then only 12 characters for
the hash, and then one line summary of the commit[1], like below.

Fixes: a61ea561c871 ("mm/damon/sysfs: link DAMON for virtual address spaces monitoring")

[1] https://www.kernel.org/doc/html/v4.15/process/submitting-patches.html#describe-your-changes

> Cc: <stable@vger.kernel.org>
> ---

Also, putting the change log of the patch here would be a good practice.

Other than the very minor things,

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


As the changes I'm requesting are very minor, I will revise and post a new
version of this patch on my own.


Thanks,
SJ

>  mm/damon/sysfs.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/mm/damon/sysfs.c b/mm/damon/sysfs.c
> index 7488e27c87c3..bdef9682d0a0 100644
> --- a/mm/damon/sysfs.c
> +++ b/mm/damon/sysfs.c
> @@ -2182,12 +2182,12 @@ static int damon_sysfs_add_target(struct damon_sysfs_target *sys_target,
>  
>  	if (!t)
>  		return -ENOMEM;
> +	damon_add_target(ctx, t);
>  	if (damon_target_has_pid(ctx)) {
>  		t->pid = find_get_pid(sys_target->pid);
>  		if (!t->pid)
>  			goto destroy_targets_out;
>  	}
> -	damon_add_target(ctx, t);
>  	err = damon_sysfs_set_regions(t, sys_target->regions);
>  	if (err)
>  		goto destroy_targets_out;
> -- 
> 2.35.1
>
diff mbox series

Patch

diff --git a/mm/damon/sysfs.c b/mm/damon/sysfs.c
index 7488e27c87c3..bdef9682d0a0 100644
--- a/mm/damon/sysfs.c
+++ b/mm/damon/sysfs.c
@@ -2182,12 +2182,12 @@  static int damon_sysfs_add_target(struct damon_sysfs_target *sys_target,
 
 	if (!t)
 		return -ENOMEM;
+	damon_add_target(ctx, t);
 	if (damon_target_has_pid(ctx)) {
 		t->pid = find_get_pid(sys_target->pid);
 		if (!t->pid)
 			goto destroy_targets_out;
 	}
-	damon_add_target(ctx, t);
 	err = damon_sysfs_set_regions(t, sys_target->regions);
 	if (err)
 		goto destroy_targets_out;