All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "SeongJae Park" <sj@kernel.org>
Cc: damon@lists.linux.dev
Subject: Re: [RFC PATCH v1.3 01/18] mm/damon: introduce damon_nr_accesses_mvsum()
Date: Mon, 22 Jun 2026 14:36:08 +0000	[thread overview]
Message-ID: <20260622143609.1668B1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260622142139.30269-2-sj@kernel.org>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Potential 32-bit integer overflow in `damon_nr_accesses_mvsum()` when calculating `left_window_bp` using `mult_frac()` for large interval ratios.
--

commit e0ac3f6397c85ca0b28c3db5a3bfa0bbe79402ee
Author: SeongJae Park <sj@kernel.org>

mm/damon: introduce damon_nr_accesses_mvsum()

This commit introduces a new DAMON core function, damon_nr_accesses_mvsum(),
which returns a pseudo moving sum value of a given region's nr_accesses for
the last aggregation interval.

> diff --git a/mm/damon/core.c b/mm/damon/core.c
> --- a/mm/damon/core.c
> +++ b/mm/damon/core.c

[ ... ]

> @@ -210,6 +210,68 @@ static struct damon_probe *damon_nth_probe(int n, struct damon_ctx *ctx)

[ ... ]

> +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;
> +	if (time_after_eq(ctx->passed_sample_intervals,
> +				ctx->next_aggregation_sis))
> +		left_window = 0;
> +	else
> +		left_window = ctx->next_aggregation_sis -
> +			ctx->passed_sample_intervals;
> +	left_window_bp = mult_frac(left_window, 10000, window_len);

[Severity: Medium]
Can this cause a 32-bit integer overflow on 32-bit architectures?

The mult_frac(x, n, d) macro internally computes the remainder multiplied by n
using the native type of x. Since left_window is an unsigned long, it will be
32 bits on 32-bit architectures.

If window_len (and thus left_window) exceeds 429,496, the multiplication
left_window * 10000 will overflow the 32-bit integer maximum (~4.29 billion)
before division.

This easily occurs if a user configures a long aggregation interval via sysfs.
For example, a 1 hour aggregation interval (3,600,000,000 us) with a 5,000 us
sampling interval gives a window_len of 720,000.

This overflow would result in an incorrect left_window_bp and consequently an
inaccurate pseudo moving sum access score, which could improperly drive DAMOS
policies.

> +
> +	return damon_mvsum(r->nr_accesses, r->last_nr_accesses,
> +			left_window_bp);
> +}

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

  reply	other threads:[~2026-06-22 14:36 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-22 14:21 [RFC PATCH v1.3 00/18] mm/damon: optimize out nr_accesses_bp SeongJae Park
2026-06-22 14:21 ` [RFC PATCH v1.3 01/18] mm/damon: introduce damon_nr_accesses_mvsum() SeongJae Park
2026-06-22 14:36   ` sashiko-bot [this message]
2026-06-22 14:21 ` [RFC PATCH v1.3 02/18] mm/damon/tests/core-kunit: test damon_mvsum() SeongJae Park
2026-06-22 14:21 ` [RFC PATCH v1.3 03/18] mm/damon/core: always update ->last_nr_accesses for intervals change SeongJae Park
2026-06-22 14:37   ` sashiko-bot
2026-06-22 14:21 ` [RFC PATCH v1.3 04/18] mm/damon/core: handle unreset nr_accesses in damon_nr_accesses_mvsum() SeongJae Park
2026-06-22 14:42   ` sashiko-bot
2026-06-22 14:21 ` [RFC PATCH v1.3 05/18] mm/damon/core: use damon_nr_accesses_mvsum() in __damos_valid_target() SeongJae Park
2026-06-22 14:37   ` sashiko-bot
2026-06-22 14:21 ` [RFC PATCH v1.3 06/18] mm/damon/core: use damon_nr_accesses_mvsum() for damos region tracing SeongJae Park
2026-06-22 14:21 ` [RFC PATCH v1.3 07/18] mm/damon/sysfs-schemes: use damon_nr_accesses_mvsum() for damo regions SeongJae Park
2026-06-22 14:36   ` sashiko-bot
2026-06-22 14:21 ` [RFC PATCH v1.3 08/18] mm/damon/core: remove damon_warn_fix_nr_accesses_corruption() SeongJae Park
2026-06-22 14:21 ` [RFC PATCH v1.3 09/18] mm/damon/core: remove damon_verify_reset_aggregated() SeongJae Park
2026-06-22 14:21 ` [RFC PATCH v1.3 10/18] mm/damon/core: remove damon_verify_merge_regions_of() SeongJae Park
2026-06-22 14:21 ` [RFC PATCH v1.3 11/18] mm/damon/tests/core-kunit: remove nr_accesses_bp setup and tests SeongJae Park
2026-06-22 14:21 ` [RFC PATCH v1.3 12/18] selftests/damon/drgn_dump_damon_status: do not dump nr_accesses_bp SeongJae Park
2026-06-22 14:21 ` [RFC PATCH v1.3 13/18] mm/damon/core: remove nr_accesses_bp setups and updates SeongJae Park
2026-06-22 14:21 ` [RFC PATCH v1.3 14/18] mm/damon/core: remove attrs param from damon_update_region_access_rate() SeongJae Park
2026-06-22 14:21 ` [RFC PATCH v1.3 15/18] mm/damonn/paddr: remove attrs param from __damon_pa_check_access() SeongJae Park
2026-06-22 14:21 ` [RFC PATCH v1.3 16/18] mm/damon/vaddr: remove attrs param from __damon_va_check_access() SeongJae Park
2026-06-22 14:21 ` [RFC PATCH v1.3 17/18] mm/damon/core: remove damon_moving_sum() and its unit test SeongJae Park
2026-06-22 14:21 ` [RFC PATCH v1.3 18/18] 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=20260622143609.1668B1F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=damon@lists.linux.dev \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=sj@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.