From: SeongJae Park <sj@kernel.org>
To: Liew Rui Yan <aethernet65535@gmail.com>
Cc: SeongJae Park <sj@kernel.org>, damon@lists.linux.dev, linux-mm@kvack.org
Subject: Re: (sashiko review) [PATCH v4 1/2] mm/damon/lru_sort: validate min_region_size to be power of 2
Date: Fri, 10 Apr 2026 06:55:00 -0700 [thread overview]
Message-ID: <20260410135500.81989-1-sj@kernel.org> (raw)
In-Reply-To: <20260410094004.193555-1-aethernet65535@gmail.com>
On Fri, 10 Apr 2026 17:40:04 +0800 Liew Rui Yan <aethernet65535@gmail.com> wrote:
> Sashiko found some issues.
Clarifying what is the following action for the sashiko finding would be
helpful. For example, if you say "Sashiko found some issues, so I will post a
new versiuon soon", and if I'm busy, I can save my time by saying "Ok, then I
will skip or delaying review of this version and wait for your next review".
Seems you think Sashiko found issues are not worthy to post a new version,
though, so I'm commenting below.
>
> 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/20260410044259.95877-2-aethernet65535@gmail.com
> > # start of sashiko.dev inline review
> > commit bc048f9325d07815d621e80f3c40408c0210af75
> > Author: Liew Rui Yan <aethernet65535@gmail.com>
> >
> > mm/damon/lru_sort: validate min_region_size to be power of 2
> >
> > This commit adds early validation for min_region_sz in
> > damon_lru_sort_apply_parameters(). If the user configures an addr_unit that
> > produces a non-power-of-2 min_region_sz, it immediately returns -EINVAL to
> > avoid setting maybe_corrupted and unexpectedly terminating kdamond.
> >
> > > diff --git a/mm/damon/lru_sort.c b/mm/damon/lru_sort.c
> > > index 554559d729760..3fd176ef9d9c1 100644
> > > --- a/mm/damon/lru_sort.c
> > > +++ b/mm/damon/lru_sort.c
> > > @@ -294,6 +294,11 @@ static int damon_lru_sort_apply_parameters(void)
> > > param_ctx->addr_unit = addr_unit;
> > > param_ctx->min_region_sz = max(DAMON_MIN_REGION_SZ / addr_unit, 1);
> > >
> > > + if (!is_power_of_2(param_ctx->min_region_sz)) {
> > > + err = -EINVAL;
> > > + goto out;
> > > + }
> > > +
> >
> > Is the DAMON sysfs interface also susceptible to this regression?
> >
> > When a user configures addr_unit via sysfs and writes 'on' to the state file,
> > damon_sysfs_turn_damon_on() builds the context. The min_region_sz is
> > calculated directly from addr_unit without a power-of-two check, and then
> > damon_start() is called, bypassing the damon_commit_ctx() safeguard.
> >
> > Since the DAMON core uses min_region_sz as an alignment mask in macros like
> > ALIGN() and ALIGN_DOWN(), can this cause memory corruption or infinite loops
> > in functions like damon_fill_regions_holes() if a non-power-of-2 value is
> > provided via sysfs?
>
> This issue has been discussed before [1]. While it's a valid concern,
> it's outside the scope of this backport patch. SeongJae Park has
> indicated he will work on this.
That's correct. It's on my todo list.
>
> >
> > This patch works around damon_commit_ctx() failing due to !is_power_of_2()
> > by performing the check early, but does damon_commit_ctx() still have a
> > regression leading to unexpected termination if other allocations fail?
>
> Yes, unexpected termination still exists.
>
> This patch provides a minimal workaround for the specific case of
> non-power-of-2 'min_region_sz', which is suitable for backport.
I agree.
>
> >
> > If damon_commit_ctx() fails midway, for example returning -ENOMEM from
> > damon_commit_schemes(), it leaves dst->maybe_corrupted = true and bails
> > out without rolling back the partial updates.
> >
> > Even the DAMON sysfs interface, which attempts to mitigate this using a
> > test_ctx dry-run, could experience a time-of-check to time-of-use race
> > where the test allocation succeeds but the final commit allocation fails.
> >
> > Since these modules operate under memory pressure, if an -ENOMEM occurs
> > during parameter updates, will the running reclaim daemon permanently
> > observe maybe_corrupted = true and unexpectedly terminate itself?
>
> You're correct. If damon_commit_ctx() fails midway, it leaves
> 'maybe_corrupted=true', causing kdamond to terminate permanently. This
> is a core error handling issue that needs to be fixed, but it's outside
> the scope of this backport patch.
Agreed. This was unclear to me in previous disucssions, though. I still agree
it is out of the scope of this patch. But now I think we need to let users
force-restart. Adding this to my todo list.
>
> >
> > > if (!damon_lru_sort_mon_attrs.sample_interval) {
> > > err = -EINVAL;
> > > goto out;
> >
> >
> > # end of sashiko.dev inline review
> > # review url: https://sashiko.dev/#/patchset/20260410044259.95877-2-aethernet65535@gmail.com
Thanks,
SJ
[...]
next prev parent reply other threads:[~2026-04-10 13:55 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-10 4:42 [PATCH v4 0/2] mm/damon: validate min_region_size to be power of 2 Liew Rui Yan
2026-04-10 4:42 ` [PATCH v4 1/2] mm/damon/lru_sort: " Liew Rui Yan
2026-04-10 9:40 ` (sashiko review) " Liew Rui Yan
2026-04-10 13:55 ` SeongJae Park [this message]
2026-04-10 16:46 ` Liew Rui Yan
2026-04-10 17:00 ` SeongJae Park
2026-04-10 23:24 ` SeongJae Park
2026-04-11 0:04 ` Liew Rui Yan
2026-04-11 15:38 ` SeongJae Park
2026-04-12 19:04 ` Liew Rui Yan
2026-04-12 21:37 ` SeongJae Park
2026-04-13 18:48 ` Liew Rui Yan
2026-04-14 0:39 ` SeongJae Park
2026-04-15 18:46 ` Liew Rui Yan
2026-04-10 13:56 ` SeongJae Park
2026-04-10 4:42 ` [PATCH v4 2/2] mm/damon/reclaim: " Liew Rui Yan
2026-04-10 10:08 ` (sashiko review) " Liew Rui Yan
2026-04-10 13:44 ` SeongJae Park
2026-04-10 13:57 ` SeongJae Park
2026-04-10 14:05 ` [PATCH v4 0/2] mm/damon: " 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=20260410135500.81989-1-sj@kernel.org \
--to=sj@kernel.org \
--cc=aethernet65535@gmail.com \
--cc=damon@lists.linux.dev \
--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 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.