[RFC PATCH 04/10] mm/damon/core: add damon_nr_regions() debug_sanity check

From: SeongJae Park

Date: Sat Feb 21 2026 - 14:38:32 EST


damon_target->nr_regions is introduced to get the number quickly without
having to iterate regions always. Add a sanity check for that under
CONFIG_DAMON_DEBUG_SANITY.

Signed-off-by: SeongJae Park <sj@xxxxxxxxxx>
---
mm/damon/core.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

diff --git a/mm/damon/core.c b/mm/damon/core.c
index 7e03c3af03694..ede76e0789be3 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -556,8 +556,30 @@ void damon_destroy_target(struct damon_target *t, struct damon_ctx *ctx)
damon_free_target(t);
}

+#ifdef CONFIG_DAMON_DEBUG_SANITY
+static void damon_verify_nr_regions(struct damon_target *t)
+{
+ struct damon_region *r;
+ unsigned int count = 0;
+
+ damon_for_each_region(r, t)
+ count++;
+ if (count == t->nr_regions)
+ return;
+ pr_err("damon_nr_regions(): t->nr_regions (%u) != real number (%u)\n",
+ t->nr_regions, count);
+ WARN_ONCE();
+}
+#else
+static void damon_verify_nr_regions(struct damon_target *t)
+{
+}
+#endif
+
unsigned int damon_nr_regions(struct damon_target *t)
{
+ damon_verify_nr_regions(t);
+
return t->nr_regions;
}

--
2.47.3