]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mm/damon/core: add damon_split_region_at() debug_sanity check
authorSeongJae Park <sj@kernel.org>
Fri, 6 Mar 2026 15:29:10 +0000 (07:29 -0800)
committerAndrew Morton <akpm@linux-foundation.org>
Sun, 5 Apr 2026 20:53:20 +0000 (13:53 -0700)
damon_split_region_at() should be called with the correct address to split
on.  Add a sanity check for that under CONFIG_DAMON_DEBUG_SANITY.

Link: https://lkml.kernel.org/r/20260306152914.86303-8-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>
mm/damon/core.c

index 3f55dfcb54e4780a1b0779234c28d15ffb44084b..f3e5400914cb47fd2e3ee2213c842aa78febd6a5 100644 (file)
@@ -2588,6 +2588,21 @@ static void kdamond_merge_regions(struct damon_ctx *c, unsigned int threshold,
                        threshold / 2 < max_thres);
 }
 
+#ifdef CONFIG_DAMON_DEBUG_SANITY
+static void damon_verify_split_region_at(struct damon_region *r,
+               unsigned long sz_r)
+{
+       WARN_ONCE(sz_r == 0 || sz_r >= damon_sz_region(r),
+                       "sz_r: %lu r: %lu-%lu (%lu)\n",
+                       sz_r, r->ar.start, r->ar.end, damon_sz_region(r));
+}
+#else
+static void damon_verify_split_region_at(struct damon_region *r,
+               unsigned long sz_r)
+{
+}
+#endif
+
 /*
  * Split a region in two
  *
@@ -2599,6 +2614,7 @@ static void damon_split_region_at(struct damon_target *t,
 {
        struct damon_region *new;
 
+       damon_verify_split_region_at(r, sz_r);
        new = damon_new_region(r->ar.start + sz_r, r->ar.end);
        if (!new)
                return;