All of lore.kernel.org
 help / color / mirror / Atom feed
From: SeongJae Park <sj@kernel.org>
To: SeongJae Park <sj@kernel.org>
Cc: sashiko-bot@kernel.org, damon@lists.linux.dev
Subject: Re: [RFC PATCH v1.1 01/13] mm/damon: introduce damon_nr_accesses_mvsum()
Date: Sat, 20 Jun 2026 10:41:26 -0700	[thread overview]
Message-ID: <20260620174127.92593-1-sj@kernel.org> (raw)
In-Reply-To: <20260620173914.92469-1-sj@kernel.org>

On Sat, 20 Jun 2026 10:39:30 -0700 SeongJae Park <sj@kernel.org> wrote:

> On Sat, 20 Jun 2026 17:36:32 +0000 sashiko-bot@kernel.org wrote:
> 
> > Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> > - [High] Integer overflow in `mult_frac` within `damon_nr_accesses_mvsum()` corrupts DAMON moving sum access score on 32-bit architectures.
> > --
> > 
> > commit 33b6652e4ab7390d9a1e1c6a292edc9a0fec212a
> > Author: SeongJae Park <sj@kernel.org>
> > 
> > mm/damon: introduce damon_nr_accesses_mvsum()
> > 
> > This commit introduces damon_nr_accesses_mvsum() which returns a pseudo
> > moving sum of a given region's nr_accesses for the last aggregation interval.
> > 
> > > diff --git a/mm/damon/core.c b/mm/damon/core.c
> > > index 7e4b9affc5b06..af95783d3402a 100644
> > > --- a/mm/damon/core.c
> > > +++ b/mm/damon/core.c
> > 
> > [ ... ]
> > 
> > > @@ -210,6 +210,63 @@ static struct damon_probe *damon_nth_probe(int n, struct damon_ctx *ctx)
> > >  	return NULL;
> > >  }
> > >  
> > > +/*
> > > + * damon_mvsum() - Returns pseudo moving sum value for a time window.
> > > + * @current_nr:		The value of the current aggregation window.
> > 
> > [ ... ]
> > 
> > > +unsigned int damon_nr_accesses_mvsum(struct damon_region *r,
> > > +		struct damon_ctx *ctx)
> > > +{
> > > +	unsigned long sample_interval, aggr_interval;
> > > +	unsigned long window_len, left_window, left_window_bp;
> > > +
> > > +	sample_interval = ctx->attrs.sample_interval ? : 1;
> > > +	aggr_interval = ctx->attrs.aggr_interval ? : 1;
> > > +	window_len = aggr_interval / sample_interval;
> > > +	left_window = ctx->next_aggregation_sis - ctx->passed_sample_intervals;
> > > +	left_window_bp = mult_frac(left_window, 10000, window_len);
> > 
> > [Severity: High]
> > Can the intermediate multiplication inside mult_frac() overflow on 32-bit
> > architectures?
> > 
> > The mult_frac(x, n, d) macro computes (x / d) * n + (x % d) * n / d. Since
> > left_window is generally less than window_len, the remainder (x % d) evaluates
> > directly to left_window.
> > 
> > On 32-bit architectures, both left_window and the resulting product are 32-bit
> > unsigned long values. If window_len exceeds 429,496 (for example, a 5ms
> > sample_interval coupled with a ~36 minute aggr_interval), the intermediate
> > calculation of left_window * 10000 can exceed ULONG_MAX (4,294,967,295) and
> > silently wrap around.
> > 
> > This wrap around would cause left_window_bp to calculate as a truncated,
> > artificially low value, leading to an incorrect access frequency score that
> > might affect memory reclaim or protection decisions.
> 
> This can happen only under a weird setup that we are not aiming to support for
> now.  We could revisit this if a real user claims this as an issue and ask a
> support.

FYI, I'm hacking on making a central validation point of DAMON parameters.
Once it is done, we may be able to strictly avoid the weird setup by adding a
validation for that.


Thanks,
SJ

[...]

  reply	other threads:[~2026-06-20 17:41 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-20 17:22 [RFC PATCH v1.1 00/13] mm/damon: optimize out nr_accesses_bp SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 01/13] mm/damon: introduce damon_nr_accesses_mvsum() SeongJae Park
2026-06-20 17:36   ` sashiko-bot
2026-06-20 17:39     ` SeongJae Park
2026-06-20 17:41       ` SeongJae Park [this message]
2026-06-20 17:22 ` [RFC PATCH v1.1 02/13] mm/damon/tests/core-kunit: test damon_mvsum() SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 03/13] mm/damon/core: use damon_nr_accesses_mvsum() in __damos_valid_target() SeongJae Park
2026-06-20 17:41   ` sashiko-bot
2026-06-20 18:07     ` SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 04/13] mm/damon/core: use damon_nr_accesses_mvsum() for damos region tracing SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 05/13] mm/damon/sysfs-schemes: use damon_nr_accesses_mvsum() for damo regions SeongJae Park
2026-06-20 17:37   ` sashiko-bot
2026-06-20 18:19     ` SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 06/13] mm/damon/core: remove damon_warn_fix_nr_accesses_corruption() SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 07/13] mm/damon/core: remove damon_verify_reset_aggregated() SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 08/13] mm/damon/core: remove damon_verify_merge_regions_of() SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 09/13] mm/damon/tests/core-kunit: remove nr_accesses_bp setup and tests SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 10/13] selftests/damon/drgn_dump_damon_status: do not dump nr_accesses_bp SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 11/13] mm/damon/core: remove nr_accesses_bp setups and updates SeongJae Park
2026-06-20 17:34   ` sashiko-bot
2026-06-20 17:45     ` SeongJae Park
2026-06-20 18:20       ` SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 12/13] mm/damon/core: remove damon_moving_sum() and its unit test SeongJae Park
2026-06-20 17:35   ` sashiko-bot
2026-06-20 17:47     ` SeongJae Park
2026-06-20 17:22 ` [RFC PATCH v1.1 13/13] mm/damon: remove damon_region->nr_accesses_bp 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=20260620174127.92593-1-sj@kernel.org \
    --to=sj@kernel.org \
    --cc=damon@lists.linux.dev \
    --cc=sashiko-bot@kernel.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.