Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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: d8f867fa0825 ("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>

authored by

SeongJae Park and committed by
Andrew Morton
8d009da3 7ef5268a

+4 -1
+4 -1
mm/damon/sysfs.c
··· 1435 1435 if (err) 1436 1436 return err; 1437 1437 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); 1439 1442 err = damon_sysfs_set_attrs(ctx, sys_ctx->attrs); 1440 1443 if (err) 1441 1444 return err;