[PATCH 4/8] mm/damon/core: disallow max < min damos filter range arguments commit

From: SJ Park

Date: Mon Sep 14 2026 - 11:32:43 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 94ea63084a24d..e0414d2adcb41 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