mirror of
https://github.com/torvalds/linux.git
synced 2026-05-13 00:28:54 +02:00
mm/damon/core: add damon_merge_two_regions() debug_sanity check
A data corruption could cause damon_merge_two_regions() creating zero length DAMON regions. Add a sanity check for that under CONFIG_DAMON_DEBUG_SANITY. Link: https://lkml.kernel.org/r/20260306152914.86303-6-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>
This commit is contained in:
parent
242a764abe
commit
0bb7682fdb
|
|
@ -2475,6 +2475,21 @@ static void kdamond_apply_schemes(struct damon_ctx *c)
|
|||
mutex_unlock(&c->walk_control_lock);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_DAMON_DEBUG_SANITY
|
||||
static void damon_verify_merge_two_regions(
|
||||
struct damon_region *l, struct damon_region *r)
|
||||
{
|
||||
/* damon_merge_two_regions() may created incorrect left region */
|
||||
WARN_ONCE(l->ar.start >= l->ar.end, "l: %lu-%lu, r: %lu-%lu\n",
|
||||
l->ar.start, l->ar.end, r->ar.start, r->ar.end);
|
||||
}
|
||||
#else
|
||||
static void damon_verify_merge_two_regions(
|
||||
struct damon_region *l, struct damon_region *r)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Merge two adjacent regions into one region
|
||||
*/
|
||||
|
|
@ -2488,6 +2503,7 @@ static void damon_merge_two_regions(struct damon_target *t,
|
|||
l->nr_accesses_bp = l->nr_accesses * 10000;
|
||||
l->age = (l->age * sz_l + r->age * sz_r) / (sz_l + sz_r);
|
||||
l->ar.end = r->ar.end;
|
||||
damon_verify_merge_two_regions(l, r);
|
||||
damon_destroy_region(r, t);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user