All of lore.kernel.org
 help / color / mirror / Atom feed
From: SeongJae Park <sj@kernel.org>
To: Levi Yun <ppbuk5246@gmail.com>
Cc: sj@kernel.org, akpm@linux-foundation.org, damon@lists.linux.dev,
	linux-mm@kvack.org
Subject: Re: [PATCH] damon/sysfs: Fix possible memleak on damon_sysfs_add_target.
Date: Sun, 25 Sep 2022 17:40:13 +0000	[thread overview]
Message-ID: <20220925174013.59565-1-sj@kernel.org> (raw)
In-Reply-To: <20220925140257.23431-1-ppbuk5246@gmail.com>

On Sun, 25 Sep 2022 23:02:57 +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.

Good finding, thanks!

> 
> By calling additional damon_free_target when find_get_pid function,
> Fix possible memory leak.
> 
> Signed-off-by: Levi Yun <ppbuk5246@gmail.com>

Could we add relevant 'Fixes: ' and 'Cc: <stable@vger.kernel.org>' tags?

> ---
>  mm/damon/sysfs.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/mm/damon/sysfs.c b/mm/damon/sysfs.c
> index 7488e27c87c3..28ed07d26d55 100644
> --- a/mm/damon/sysfs.c
> +++ b/mm/damon/sysfs.c
> @@ -2184,8 +2184,11 @@ static int damon_sysfs_add_target(struct damon_sysfs_target *sys_target,
>  		return -ENOMEM;
>  	if (damon_target_has_pid(ctx)) {
>  		t->pid = find_get_pid(sys_target->pid);
> -		if (!t->pid)
> +		if (!t->pid) {
> +			damon_free_target(t);
> +

Seems unnecessary new line?

>  			goto destroy_targets_out;
> +		}
>  	}

Looks good to me, but...  How about simply doing 'damon_add_target()' before
'if (damon_target_has_pid())', like below?

```
diff --git a/mm/damon/sysfs.c b/mm/damon/sysfs.c
index 455215a5c059..9f1219a67e3f 100644
--- a/mm/damon/sysfs.c
+++ b/mm/damon/sysfs.c
@@ -2172,12 +2172,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;
```


Thanks,
SJ

>  	damon_add_target(ctx, t);
>  	err = damon_sysfs_set_regions(t, sys_target->regions);
> -- 
> 2.35.1
> 
> 

      reply	other threads:[~2022-09-25 17:40 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-25 14:02 [PATCH] damon/sysfs: Fix possible memleak on damon_sysfs_add_target Levi Yun
2022-09-25 17:40 ` SeongJae Park [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220925174013.59565-1-sj@kernel.org \
    --to=sj@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=damon@lists.linux.dev \
    --cc=linux-mm@kvack.org \
    --cc=ppbuk5246@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.