Re: [PATCH] mm/damon/stat: avoid 32-bit overflow in idle percentiles

From: SJ Park

Date: Fri Oct 16 2026 - 10:38:54 EST


On Thu, 15 Oct 2026 22:52:04 +0800 Aveline Noir <jm5905938@xxxxxxxxx> wrote:

> On 32-bit, accounted_bytes * 100 can wrap before division by total_sz.
> Some entries in memory_idle_ms_percentiles then keep their old values
> instead of being updated.
>
> For example, a 256 MiB i386 QEMU guest reported p0=19200 ms, but p50 and
> p100 were both zero.
>
> Cast accounted_bytes to u64 before multiplying and use div64_ul() for
> the division. Compute the percentage once per region.
>
> Link: https://lore.kernel.org/r/CANOyQmHad1vamnZT12M5yPrJ69==Pt1U0+MGw6u0MuNtr-DRCw@xxxxxxxxxxxxxx

>From the next time, please give context about what the link is.

> Signed-off-by: Aveline Noir <jm5905938@xxxxxxxxx>

Reviewed-by: SJ Park <sj@xxxxxxxxxx>

I applied this patch to damon/next [1] tree, after slightly modifying the
commit message for the abovely mentioned small thing. We are now quite close
to next merge window. It may better to focus on making mm.git more stabilized
and therefore ready for the next merge window, rather than adding more changes
that are not really urgent. I understand this series is not really urgent.
Hence, Andrew might not add this patch until next -rc1 release. In the case, I
will request adding this to mm.git after next -rc1 release. So, no action from
your side is needed for now. Let me know if you think this is really urgent.

> ---
> This is against mm-new ad9f2d463666. With the fix, the original test
> reports p0=p50=p100=19200 ms. The i386 kernel build, x86_64 W=1 stat.o
> build and external arithmetic checks passed.
>
> I also ran 38 before/after VM tests and 20 same-image controls. Throughput
> was close overall, but median kdamond CPU rose by 0.0053 and 0.0221
> percentage points of one guest CPU for stream and sparse, respectively.
> Some pairs had 5.91% lower throughput or 15.49% higher scan P99. So I can't
> yet tell whether these differences come from the patch.
>
>
> mm/damon/stat.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/mm/damon/stat.c b/mm/damon/stat.c

The above empty space before 'diff --git' line was making 'git am' of this
patch fails. I manually fixed it. Please do not add such empty space or
something that could make 'git am' fails, from the next time.

[1] https://origin.kernel.org/doc/html/latest/mm/damon/maintainer-profile.html#scm-trees


Thanks,
SJ

[...]