After introducing ctx->addr_unit, the unit of sz might not be in bytes. However, sz_applied is returned in bytes after processing by paddr. To maintain external consistency, sz is converted to byte units when updating the state. Signed-off-by: Quanmin Yan --- mm/damon/core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mm/damon/core.c b/mm/damon/core.c index b162aa1156fc..bc764f9dc5c5 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -1889,7 +1889,9 @@ static void damos_apply_scheme(struct damon_ctx *c, struct damon_target *t, r->age = 0; update_stat: - damos_update_stat(s, sz, sz_applied, sz_ops_filter_passed); + damos_update_stat(s, + sz * (c->ops.id == DAMON_OPS_PADDR ? c->addr_unit : 1), + sz_applied, sz_ops_filter_passed); } static void damon_do_apply_schemes(struct damon_ctx *c, -- 2.34.1