[PATCH 04/10] mm/damon/core: set damon_ctx->walk_control_obsolete in damon_new_ctx()

From: SJ Park

Date: Thu Sep 17 2026 - 10:43:40 EST


damos_walk() should be called for a damon_ctx context that has
successfully started at least once. That's because
damon_ctx->walk_control_obsolete is initialized when kdamond starts. If
the rule is violated, an indefinite wait can happen. There is no
existing violation of the rule.

damon_call() had a similar rule, and it turned out keeping the rule is
not easy for damon_call()'s case. Hence, commit 8023b5f47e09
("mm/damon/core: set ctx->call_controls_obsolete in damon_new_ctx()")
added the initialization in damon_new_ctx() and removed the rule.

Keeping the rule for damos_walk() is relatively easier. But having
slightly different rules for similar functions could be confusing.
Sashiko, for example, repeatedly asked questions about this. Do the
initialization of walk_control_obsolete in damon_new_ctx() for
consistency.

[1] https://lore.kernel.org/20260915011614.102342-1-sj@xxxxxxxxxx

Signed-off-by: SJ Park <sj@xxxxxxxxxx>
---
mm/damon/core.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/mm/damon/core.c b/mm/damon/core.c
index bc41ac7ecca43..c63b09d4a2d0d 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -939,6 +939,7 @@ struct damon_ctx *damon_new_ctx(void)
INIT_LIST_HEAD(&ctx->schemes);

ctx->call_controls_obsolete = true;
+ ctx->walk_control_obsolete = true;
prandom_seed_state(&ctx->rnd_state, get_random_u64());

return ctx;
@@ -2308,10 +2309,6 @@ int damon_call(struct damon_ctx *ctx, struct damon_call_control *control)
* passed at least one &damos->apply_interval_us, kdamond marks the request as
* completed so that damos_walk() can wakeup and return.
*
- * Note that this function should be called only after damon_start() with the
- * @ctx has succeeded. Otherwise, this function could fall into an indefinite
- * wait.
- *
* Return: 0 on success, negative error code otherwise.
*/
int damos_walk(struct damon_ctx *ctx, struct damos_walk_control *control)
--
2.47.3