All of lore.kernel.org
 help / color / mirror / Atom feed
From: SJ Park <sj@kernel.org>
To: sashiko-bot@kernel.org
Cc: SJ Park <sj@kernel.org>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	damon@lists.linux.dev, linux-mm@kvack.org
Subject: Re: [RFC PATCH 2/4] mm/damon/sysfs-schemes: support DAMOS_FILTER_TYPE_AGE_MS
Date: Wed,  4 Nov 2026 07:51:47 -0800	[thread overview]
Message-ID: <20261104155148.83931-1-sj@kernel.org> (raw)
In-Reply-To: <sashiko-outbox-197544@kernel.org>

On Wed, 04 Nov 2026 15:50:23 +0000 sashiko-bot@kernel.org wrote:

> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [Medium] mm/damon: 32-bit overflow calculating age_ms in damos_filter_match()
> --
> 
> commit 9c78f1b31239922167bf213c5406c37c05fd310f
> Author: SJ Park <sj@kernel.org>
> 
> mm/damon/sysfs-schemes: support DAMOS_FILTER_TYPE_AGE_MS
> 
> This commit exposes DAMOS_FILTER_TYPE_AGE_MS to the DAMON sysfs interface
> using the "age_ms" filter type keyword and the existing min and max sysfs
> range files.
> 
> > diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c
> > index 637f1bd0c950b..230987efac3ac 100644
> > --- a/mm/damon/sysfs-schemes.c
> > +++ b/mm/damon/sysfs-schemes.c
> 
> [ ... ]
> 
> > @@ -2875,6 +2879,7 @@ static int damon_sysfs_add_scheme_filters(struct damos *scheme,
> >  			filter->sz_range.max = sysfs_filter->range_max;
> >  			break;
> >  		case DAMOS_FILTER_TYPE_PROBE_HITS_WSUM:
> > +		case DAMOS_FILTER_TYPE_AGE_MS:
> >  			filter->range_min = sysfs_filter->range_min;
> >  			filter->range_max = sysfs_filter->range_max;
> >  			break;
> 
> [Severity: Medium]
> When userspace configures an age_ms filter with range_min and range_max via
> damon_sysfs_add_scheme_filters() on a 32-bit system, can age_ms overflow in
> damos_filter_match()?
> 
> When kdamond evaluates the filter via
> kdamond_apply_schemes()->damon_do_apply_schemes()->damos_apply_scheme()->damos_core_filter_out()->damos_filter_match():
> 
> mm/damon/core.c:damos_filter_match() {
> 	...
> 	case DAMOS_FILTER_TYPE_AGE_MS:
> 		age_ms = r->age * ctx->attrs.aggr_interval / USEC_PER_MSEC;
> 		matched = filter->range_min <= age_ms &&
> 			age_ms <= filter->range_max;
> 		break;
> 	...
> }
> 
> Here r->age is unsigned int and ctx->attrs.aggr_interval is unsigned long
> (in microseconds). On 32-bit architectures, multiplying r->age by
> ctx->attrs.aggr_interval is performed in 32-bit unsigned arithmetic before
> dividing by USEC_PER_MSEC, which wraps around once a region's age exceeds
> approximately 4,295 seconds (~71.6 minutes) even though the resulting
> millisecond value fits in a 32-bit unsigned long.
> 
> A similar 32-bit overflow on r->age * c->attrs.aggr_interval in
> damon_hot_score() in mm/damon/ops-common.c was fixed in commit 0284dff76e87
> ("mm/damon/ops-common: fix age_in_sec overflow on 32-bit"). Should
> damos_filter_match() use div_u64((u64)r->age * ctx->attrs.aggr_interval,
> USEC_PER_MSEC) as well?

I will fix [1] in the next version.

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

> 
> -- 
> Sashiko AI review · https://sashiko.dev/#/patchset/20261104153645.82945-1-sj@kernel.org?part=2
> 


Thanks,
SJ


  reply	other threads:[~2026-11-04 15:51 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-04 15:36 [RFC PATCH 0/4] DAMOS access pattern supports selecting regions to apply a given SJ Park
2026-11-04 15:36 ` [RFC PATCH 1/4] mm/damon/core: add DAMOS_FILTER_TYPE_AGE_MS SJ Park
2026-11-04 15:44   ` sashiko-bot
2026-11-04 15:47     ` SJ Park
2026-11-04 15:36 ` [RFC PATCH 2/4] mm/damon/sysfs-schemes: support DAMOS_FILTER_TYPE_AGE_MS SJ Park
2026-11-04 15:50   ` sashiko-bot
2026-11-04 15:51     ` SJ Park [this message]
2026-11-04 15:36 ` [RFC PATCH 3/4] Docs/mm/damon/design: update for age_ms damos core filter type SJ Park
2026-11-04 15:53   ` sashiko-bot
2026-11-04 15:36 ` [RFC PATCH 4/4] Docs/admin-guide/mm/damon/usage: update for age_ms damos core filter SJ Park
2026-11-04 15:56   ` sashiko-bot
2026-11-05  1:15 ` [RFC PATCH 0/4] DAMOS access pattern supports selecting regions to apply a given SJ 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=20261104155148.83931-1-sj@kernel.org \
    --to=sj@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=damon@lists.linux.dev \
    --cc=linux-mm@kvack.org \
    --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.