summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeongJae Park <sj@kernel.org>2026-03-06 18:29:10 +0300
committerAndrew Morton <akpm@linux-foundation.org>2026-04-05 23:53:20 +0300
commit6aa1f783547896df3db1cf3dc5198f03df5ce775 (patch)
treee6e58e6dde8b91e6ddd8cd91dfbb048b952727ae
parentc070da23913f66b7c08340a137622ba2f2203616 (diff)
downloadlinux-6aa1f783547896df3db1cf3dc5198f03df5ce775.tar.xz
mm/damon/core: add damon_split_region_at() debug_sanity check
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>
-rw-r--r--mm/damon/core.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/mm/damon/core.c b/mm/damon/core.c
index 3f55dfcb54e4..f3e5400914cb 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -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;