[RFC PATCH 07/10] mm/damon/core: add damon_split_region_at() debug_sanity check
From: SeongJae Park
Date: Sat Feb 21 2026 - 14:40:16 EST
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.
Signed-off-by: SeongJae Park <sj@xxxxxxxxxx>
---
mm/damon/core.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/mm/damon/core.c b/mm/damon/core.c
index 94be598cafef1..16f7994903d6d 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -2629,6 +2629,23 @@ 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)
+{
+ if (sz_r > 0 && sz_r < damon_sz_region(r))
+ return;
+ pr_err("damon_split_region() call with r %lu-%lu (%lu), sz_r %lu\n",
+ r->ar.start, r->ar.end, damon_sz_region(r), sz_r);
+ WARN_ONCE();
+}
+#else
+static void damon_verify_split_region_at(struct damon_region *r,
+ unsigned long sz_r)
+{
+}
+#endif
+
/*
* Split a region in two
*
@@ -2640,6 +2657,8 @@ 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;
--
2.47.3