aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorSeongJae Park <sj@kernel.org>2025-02-10 10:27:34 -0800
committerAndrew Morton <akpm@linux-foundation.org>2025-03-16 22:06:09 -0700
commitc32696ca5e8e9fff83c951f3aa45cac2e97b0667 (patch)
tree9f5d9f10588a329348f05a617df081bbc49003b1
parentmm/mm_init.c: use round_up() to align movable range (diff)
downloadwireguard-linux-c32696ca5e8e9fff83c951f3aa45cac2e97b0667.tar.xz
wireguard-linux-c32696ca5e8e9fff83c951f3aa45cac2e97b0667.zip
mm/damon/core: unset damos->walk_completed after confimed set
Patch series "mm/damon/core: fix wrong and/or useless damos_walk() behaviors". damos_walk() can finish working earlier or later than expected, and start earlier than practical. First two behaviors are clearly wrong behavior (doesn't follow the documentation) and all three behaviors are only making the feature useless. Fix those. This patch (of 3): damos->walk_completed is only set, not unset. This can cause next damos_walk() finish earlier than expected. Unset it after all walk_completed is confirmed. Link: https://lkml.kernel.org/r/20250210182737.134994-1-sj@kernel.org Link: https://lkml.kernel.org/r/20250210182737.134994-2-sj@kernel.org Fixes: bf0eaba0ff9c ("mm/damon/core: implement damos_walk()") Signed-off-by: SeongJae Park <sj@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-rw-r--r--mm/damon/core.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/mm/damon/core.c b/mm/damon/core.c
index dc8f94fe7c3b..8e4ae9901b19 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -1494,6 +1494,9 @@ static void damos_walk_complete(struct damon_ctx *ctx, struct damos *s)
if (!siter->walk_completed)
return;
}
+ damon_for_each_scheme(siter, ctx)
+ siter->walk_completed = false;
+
complete(&control->completion);
mutex_lock(&ctx->walk_control_lock);
ctx->walk_control = NULL;