[RFC PATCH v1.1 03/11] mm/damon/core: make damon_stop() never fails

From: SJ Park

Date: Sun Jul 05 2026 - 12:02:35 EST


damon_stop() has no reason to fail. It returns an error code only for
possible future changes that can make it fail. Such a change has not
been made yet, and this only makes the error handling complicated and
confusing. Ensure it returns no error.

Signed-off-by: SJ Park <sj@xxxxxxxxxx>
---
mm/damon/core.c | 21 ++++++---------------
1 file changed, 6 insertions(+), 15 deletions(-)

diff --git a/mm/damon/core.c b/mm/damon/core.c
index d89a7f2faf350..84e400aa4e823 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -1926,10 +1926,8 @@ int damon_start(struct damon_ctx **ctxs, int nr_ctxs, bool exclusive)
/*
* __damon_stop() - Stops monitoring of a given context.
* @ctx: monitoring context
- *
- * Return: 0 on success, negative error code otherwise.
*/
-static int __damon_stop(struct damon_ctx *ctx)
+static void __damon_stop(struct damon_ctx *ctx)
{
struct task_struct *tsk;

@@ -1939,31 +1937,24 @@ static int __damon_stop(struct damon_ctx *ctx)
get_task_struct(tsk);
mutex_unlock(&ctx->kdamond_lock);
kthread_stop_put(tsk);
- return 0;
+ return;
}
mutex_unlock(&ctx->kdamond_lock);
-
- return -EPERM;
}

/**
* damon_stop() - Stops the monitorings for a given group of contexts.
* @ctxs: an array of the pointers for contexts to stop monitoring
* @nr_ctxs: size of @ctxs
- *
- * Return: 0 on success, negative error code otherwise.
*/
int damon_stop(struct damon_ctx **ctxs, int nr_ctxs)
{
- int i, err = 0;
+ int i;

- for (i = 0; i < nr_ctxs; i++) {
+ for (i = 0; i < nr_ctxs; i++)
/* nr_running_ctxs is decremented in kdamond_fn */
- err = __damon_stop(ctxs[i]);
- if (err)
- break;
- }
- return err;
+ __damon_stop(ctxs[i]);
+ return 0;
}

/**
--
2.47.3