linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: SeongJae Park <sj@kernel.org>
To: SeongJae Park <sj@kernel.org>
Cc: damon@lists.linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: (sashiko review) [RFC PATCH 1/2] mm/damon/stat: add a parameter for reading kdamond pid
Date: Wed, 15 Apr 2026 21:13:05 -0700	[thread overview]
Message-ID: <20260416041306.88803-1-sj@kernel.org> (raw)
In-Reply-To: <20260414053742.90296-1-sj@kernel.org>

On Mon, 13 Apr 2026 22:37:41 -0700 SeongJae Park <sj@kernel.org> wrote:

> TL; DR: Sashiko found a bug of this patch; I will fix it in the next revision.
> Sashiko also found one issue in the existing code; I will work on it
> separately.

No, I was wrong.

> 
> Forwarding full sashiko review in a reply format with my inline comments below,
> for sharing details of my view and doing followup discussions via mails if
> needed.
> 
> > # review url: https://sashiko.dev/#/patchset/20260414045002.88110-2-sj@kernel.org
> > # start of sashiko.dev inline review
> > commit fc6c9ec12df0df57fcce5c90c7a0604cddb1cc78
> > Author: SeongJae Park <sj@kernel.org>
> > 
> > mm/damon/stat: add a parameter for reading kdamond pid
> > 
> > This commit exposes the PID of the DAMON_STAT kdamond via a new read-only
> > module parameter, kdamond_pid. It intends to set this to -1 when DAMON_STAT
> > is disabled.
> > 
> > > diff --git a/mm/damon/stat.c b/mm/damon/stat.c
> > > index 99ba346f9e325..21fa04d95eeac 100644
> > > --- a/mm/damon/stat.c
> > > +++ b/mm/damon/stat.c
> > [ ... ]
> > > @@ -260,6 +269,9 @@ static int damon_stat_start(void)
> > >  		damon_stat_context = NULL;
> > >  		return err;
> > >  	}
> > > +	kdamond_pid = damon_kdamond_pid(damon_stat_context);
> > > +	if (kdamond_pid < 0)
> > > +		return kdamond_pid;
> > 
> > If damon_kdamond_pid() returns an error code, doesn't this leave the global
> > kdamond_pid set to that negative error code instead of -1?
> > 
> > Also, if we take this early return path, does this code leak the
> > damon_stat_context allocation? The error path just above it correctly
> > calls damon_destroy_ctx(damon_stat_context) and sets it to NULL.
> 
> Nice catch.  I will fix this like below in the next revision.

The kdamond_pid stale value question is indeed a nice catch.  But the
damon_stat_context allocation leak question is not.  It will be cleaned up when
damon_stat_start() is called again, by the cleanup logic at the beginning of
this function.  This is not a bug but an intended behavior.

[...]
> 
> '''
> --- a/mm/damon/stat.c
> +++ b/mm/damon/stat.c
> @@ -223,8 +223,12 @@ static int damon_stat_start(void)
>                 return err;
>         }
>         kdamond_pid = damon_kdamond_pid(damon_stat_context);
> -       if (kdamond_pid < 0)
> -               return kdamond_pid;
> +       if (kdamond_pid < 0) {
> +               err = kdamond_pid;
> +               kdamond_pid = -1;
> +               damon_destroy_ctx(damon_stat_context);
> +               damon_stat_context = NULL;
> +               return err;
> 
>         damon_stat_last_refresh_jiffies = jiffies;
>         call_control.data = damon_stat_context;
> '''
> 
> > 
> > >  
> > >  	damon_stat_last_refresh_jiffies = jiffies;
> > >  	call_control.data = damon_stat_context;
> > >  	return damon_call(damon_stat_context, &call_control);
> > >  }
> > 
> > If damon_call() fails here and returns an error, the caller will handle it
> > by setting enabled to false. Does this leave kdamond_pid holding a stale
> > positive PID instead of being reset to -1?
> 
> Nice catch, but not this patch's fault.  I will separately work on it.

I'm wrong here, too.  This is this patch's fault.  But, there is actually a bug
that pre-existed before this patch.  I was somehow confused.  That is, the
'enabled' value can also be stale, and it can make DAMON_STAT cannot be
restarted before the system is reboot.

I will hold this patch and fix the bug first.

Refer to my comment [1] on the next version of this patch, for more detail.

[1] https://lore.kernel.org/20260416040602.88665-1-sj@kernel.org


Thanks,
SJ

[...]


  reply	other threads:[~2026-04-16  4:13 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-14  4:49 [RFC PATCH 0/2] mm/damon/stat: add kdamond_pid parameter SeongJae Park
2026-04-14  4:49 ` [RFC PATCH 1/2] mm/damon/stat: add a parameter for reading kdamond pid SeongJae Park
2026-04-14  5:37   ` (sashiko review) " SeongJae Park
2026-04-16  4:13     ` SeongJae Park [this message]
2026-04-14  4:50 ` [RFC PATCH 2/2] Docs/admin-guide/mm/damon/stat: document kdamond_pid parameter SeongJae Park

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=20260416041306.88803-1-sj@kernel.org \
    --to=sj@kernel.org \
    --cc=damon@lists.linux.dev \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox