From: SJ Park <sj@kernel.org>
Cc: SJ Park <sj@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
damon@lists.linux.dev, linux-kernel@vger.kernel.org,
linux-mm@kvack.org
Subject: [RFC PATCH v3 2/8] mm/damon/core: commit hugepage_size type damon filter
Date: Mon, 14 Sep 2026 19:09:21 -0700 [thread overview]
Message-ID: <20260915020929.102953-3-sj@kernel.org> (raw)
In-Reply-To: <20260915020929.102953-1-sj@kernel.org>
Extend data attribute probe filters commit logic for the new
hugepage_size filter type. Since it needs to carry the size range of
the hugepage, update the logic to update the size range fields of the
commit destination filter struct. While doing that, validate the given
range and propagate an error if it is invalid. Add the error handling
in the callers, too.
Signed-off-by: SJ Park <sj@kernel.org>
---
mm/damon/core.c | 28 +++++++++++++++++++++++-----
1 file changed, 23 insertions(+), 5 deletions(-)
diff --git a/mm/damon/core.c b/mm/damon/core.c
index 5212bfb8f85f2..2c9cbcff37fac 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -1818,7 +1818,7 @@ static int damon_commit_preps(struct damon_probe *dst, struct damon_probe *src)
return 0;
}
-static void damon_commit_filter(struct damon_filter *dst,
+static int damon_commit_filter(struct damon_filter *dst,
struct damon_filter *src)
{
dst->type = src->type;
@@ -1828,23 +1828,33 @@ static void damon_commit_filter(struct damon_filter *dst,
case DAMON_FILTER_TYPE_MEMCG:
dst->memcg_id = src->memcg_id;
break;
+ case DAMON_FILTER_TYPE_HUGEPAGE_SIZE:
+ if (src->range_max < src->range_min)
+ return -EINVAL;
+ dst->range_min = src->range_min;
+ dst->range_max = src->range_max;
+ break;
default:
break;
}
+ return 0;
}
static int damon_commit_filters(struct damon_probe *dst,
struct damon_probe *src)
{
struct damon_filter *dst_filter, *next, *src_filter, *new_filter;
- int i = 0, j = 0;
+ int i = 0, j = 0, err;
damon_for_each_filter_safe(dst_filter, next, dst) {
src_filter = damon_nth_filter(i++, src);
- if (src_filter)
- damon_commit_filter(dst_filter, src_filter);
- else
+ if (src_filter) {
+ err = damon_commit_filter(dst_filter, src_filter);
+ if (err)
+ return err;
+ } else {
damon_destroy_filter(dst_filter);
+ }
}
damon_for_each_filter_safe(src_filter, next, src) {
@@ -1859,6 +1869,14 @@ static int damon_commit_filters(struct damon_probe *dst,
case DAMON_FILTER_TYPE_MEMCG:
new_filter->memcg_id = src_filter->memcg_id;
break;
+ case DAMON_FILTER_TYPE_HUGEPAGE_SIZE:
+ if (src_filter->range_max < src_filter->range_min) {
+ damon_destroy_filter(new_filter);
+ return -EINVAL;
+ }
+ new_filter->range_min = src_filter->range_min;
+ new_filter->range_max = src_filter->range_max;
+ break;
default:
break;
}
--
2.47.3
next prev parent reply other threads:[~2026-09-15 2:09 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-15 2:09 [RFC PATCH v3 0/8] mm/damon: introduce hugepage_size probe filter SJ Park
2026-09-15 2:09 ` [RFC PATCH v3 1/8] mm/damon/api: introduce DAMON_FILTER_TYPE_HUGEPAGE_SIZE SJ Park
2026-09-15 2:09 ` SJ Park [this message]
2026-09-15 2:09 ` [RFC PATCH v3 3/8] mm/damon/ops-common: support hugepage_size damon filter matching SJ Park
2026-09-15 2:09 ` [RFC PATCH v3 4/8] mm/damon/sysfs: add min,max files under probe filter directory SJ Park
2026-09-15 2:09 ` [RFC PATCH v3 5/8] mm/damon/sysfs: support hugepage_size probe filter SJ Park
2026-09-15 2:09 ` [RFC PATCH v3 6/8] Docs/mm/damon/design: update for " SJ Park
2026-09-15 2:09 ` [RFC PATCH v3 7/8] Docs/admin-guide/mm/damon/usage: update for hugepage_size SJ Park
2026-09-15 2:09 ` [RFC PATCH v3 8/8] Docs/ABI/damon: update for hugepage_size probe filter SJ Park
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260915020929.102953-3-sj@kernel.org \
--to=sj@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=damon@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®