diff mbox series

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

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

Commit Message

Yun Levi Sept. 25, 2022, 11:40 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 damon_add_target first as soon as allocate new one,
Fix possible memory leak.

Signed-off-by: Levi Yun <ppbuk5246@gmail.com>
---
 mm/damon/sysfs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--
2.35.1

Comments

Yun Levi Sept. 25, 2022, 11:41 p.m. UTC | #1
Sorry to make noise... I miss the fixes tag, resend the patch!
Thanks!

On Mon, Sep 26, 2022 at 8:41 AM 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 damon_add_target first as soon as allocate new one,
> Fix possible memory leak.
>
> Signed-off-by: Levi Yun <ppbuk5246@gmail.com>
> ---
>  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;