[RFC PATCH v2 4/8] mm/damon/core: disallow max < min damos filter range arguments commit
From: SJ Park
Date: Sun Sep 13 2026 - 13:22:54 EST
damos_commit_filter_arg() receives range arguments for a few types of
DAMOS filters. It allows any range including max < min range. It is
fine for the logic, but makes no sense to support it. Actually DAMON
sysfs interface is doing the validation on its own. To avoid duplicated
validations in multiple DAMON API callers, it would be better to do the
validation in the core layer. Add a validation of the given range.
Signed-off-by: SJ Park <sj@xxxxxxxxxx>
---
mm/damon/core.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/mm/damon/core.c b/mm/damon/core.c
index ea7d8d5a4abf6..5212bfb8f85f2 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -1325,15 +1325,21 @@ static int damos_commit_filter_arg(
dst->memcg_id = src->memcg_id;
break;
case DAMOS_FILTER_TYPE_ADDR:
+ if (src->addr_range.end < src->addr_range.start)
+ return -EINVAL;
dst->addr_range = src->addr_range;
break;
case DAMOS_FILTER_TYPE_TARGET:
dst->target_idx = src->target_idx;
break;
case DAMOS_FILTER_TYPE_HUGEPAGE_SIZE:
+ if (src->sz_range.max < src->sz_range.min)
+ return -EINVAL;
dst->sz_range = src->sz_range;
break;
case DAMOS_FILTER_TYPE_PROBE_HITS_WSUM:
+ if (src->range_max < src->range_min)
+ return -EINVAL;
dst->range_min = src->range_min;
dst->range_max = src->range_max;
break;
--
2.47.3