summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeongJae Park <sj@kernel.org>2026-03-06 18:29:07 +0300
committerAndrew Morton <akpm@linux-foundation.org>2026-04-05 23:53:20 +0300
commit242a764abe149f297273be18fdb66cfeaf27dec2 (patch)
treebe06a9541f1e0b8e29bf3eeee21a2a5e23f46092
parent9a647920d03d9da5ca4868d853a8f9267de1e070 (diff)
downloadlinux-242a764abe149f297273be18fdb66cfeaf27dec2.tar.xz
mm/damon/core: add damon_nr_regions() debug_sanity check
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. Link: https://lkml.kernel.org/r/20260306152914.86303-5-sj@kernel.org Signed-off-by: SeongJae Park <sj@kernel.org> Cc: Brendan Higgins <brendan.higgins@linux.dev> Cc: David Gow <davidgow@google.com> Cc: Shuah Khan <shuah@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-rw-r--r--mm/damon/core.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/mm/damon/core.c b/mm/damon/core.c
index c499a02ac44e..16bedde920f0 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -545,8 +545,27 @@ 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++;
+ WARN_ONCE(count != t->nr_regions, "t->nr_regions (%u) != count (%u)\n",
+ t->nr_regions, count);
+}
+#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;
}