Skip to content

Commit 8d009da

Browse files
sjp38akpm00
authored andcommitted
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 <PAGE_SIZE granularity. It shouldn't cause crash-like issues but make monitoring and DAMOS behavior difficult to understand. Fix the unexpected behavior by setting ->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: d8f867f ("mm/damon: add damon_ctx->min_sz_region") Signed-off-by: SeongJae Park <sj@kernel.org> Cc: Chris Mason <clm@fb.com> Cc: Kefeng Wang <wangkefeng.wang@huawei.com> Cc: ze zuo <zuoze1@huawei.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
1 parent 7ef5268 commit 8d009da

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

mm/damon/sysfs.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1435,7 +1435,10 @@ static int damon_sysfs_apply_inputs(struct damon_ctx *ctx,
14351435
if (err)
14361436
return err;
14371437
ctx->addr_unit = sys_ctx->addr_unit;
1438-
ctx->min_sz_region = max(DAMON_MIN_REGION / sys_ctx->addr_unit, 1);
1438+
/* addr_unit is respected by only DAMON_OPS_PADDR */
1439+
if (sys_ctx->ops_id == DAMON_OPS_PADDR)
1440+
ctx->min_sz_region = max(
1441+
DAMON_MIN_REGION / sys_ctx->addr_unit, 1);
14391442
err = damon_sysfs_set_attrs(ctx, sys_ctx->attrs);
14401443
if (err)
14411444
return err;

0 commit comments

Comments
 (0)