From: SeongJae Park Date: Wed, 17 Sep 2025 15:31:54 +0000 (-0700) Subject: mm/damon/sysfs: set damon_ctx->min_sz_region only for paddr use case X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=8d009da32f13759ee7a6ec002ba62dc8faeb6423;p=users%2Fhch%2Fmisc.git mm/damon/sysfs: set damon_ctx->min_sz_region only for paddr use case damon_ctx->addr_unit is respected only for physical address space monitoring use case. Meanwhile, damon_ctx->min_sz_region is used by the core layer for aligning regions, regardless of whether it is set for physical address space monitoring or virtual address spaces monitoring. And it is set as 'DAMON_MIN_REGION / damon_ctx->addr_unit'. Hence, if user sets ->addr_unit on virtual address spaces monitoring mode, regions can be unexpectedly aligned in min_sz_region only when it is configured for physical address space monitoring. The issue was found from a result of Chris' experiments that thankfully shared with me off-list. Link: https://lkml.kernel.org/r/20250917160041.53187-1-sj@kernel.org Fixes: d8f867fa0825 ("mm/damon: add damon_ctx->min_sz_region") Signed-off-by: SeongJae Park Cc: Chris Mason Cc: Kefeng Wang Cc: ze zuo Signed-off-by: Andrew Morton --- diff --git a/mm/damon/sysfs.c b/mm/damon/sysfs.c index fe4e73d0ebbb..883b0d886d68 100644 --- a/mm/damon/sysfs.c +++ b/mm/damon/sysfs.c @@ -1435,7 +1435,10 @@ static int damon_sysfs_apply_inputs(struct damon_ctx *ctx, if (err) return err; ctx->addr_unit = sys_ctx->addr_unit; - ctx->min_sz_region = max(DAMON_MIN_REGION / sys_ctx->addr_unit, 1); + /* addr_unit is respected by only DAMON_OPS_PADDR */ + if (sys_ctx->ops_id == DAMON_OPS_PADDR) + ctx->min_sz_region = max( + DAMON_MIN_REGION / sys_ctx->addr_unit, 1); err = damon_sysfs_set_attrs(ctx, sys_ctx->attrs); if (err) return err;