summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeongJae Park <sj@kernel.org>2026-03-06 18:29:05 +0300
committerAndrew Morton <akpm@linux-foundation.org>2026-04-05 23:53:20 +0300
commitb0264a951ced68313cbbd9f679c907a741004b58 (patch)
treecd5de17b1c994304e9a23584aa079b10f87122f1
parent62f058287558af11f6d1af3d7597ff8599998b43 (diff)
downloadlinux-b0264a951ced68313cbbd9f679c907a741004b58.tar.xz
mm/damon/core: add damon_new_region() debug_sanity check
damon_new_region() is supposed to be called with only valid address range arguments. Do the check under DAMON_DEBUG_SANITY. Link: https://lkml.kernel.org/r/20260306152914.86303-3-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.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/mm/damon/core.c b/mm/damon/core.c
index 71ccea40368d..53b573b915c7 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -109,6 +109,17 @@ int damon_select_ops(struct damon_ctx *ctx, enum damon_ops_id id)
return err;
}
+#ifdef CONFIG_DAMON_DEBUG_SANITY
+static void damon_verify_new_region(unsigned long start, unsigned long end)
+{
+ WARN_ONCE(start >= end, "start %lu >= end %lu\n", start, end);
+}
+#else
+static void damon_verify_new_region(unsigned long start, unsigned long end)
+{
+}
+#endif
+
/*
* Construct a damon_region struct
*
@@ -118,6 +129,7 @@ struct damon_region *damon_new_region(unsigned long start, unsigned long end)
{
struct damon_region *region;
+ damon_verify_new_region(start, end);
region = kmem_cache_alloc(damon_region_cache, GFP_KERNEL);
if (!region)
return NULL;