summaryrefslogtreecommitdiff
path: root/mm
diff options
context:
space:
mode:
authorJackie Liu <liuyun01@kylinos.cn>2026-03-31 18:15:53 +0800
committerAndrew Morton <akpm@linux-foundation.org>2026-04-18 00:10:51 -0700
commite04ed278d25bf15769800bf6e35c6737f137186f (patch)
treeff3ba560b7c3b95002d44678c1e2cdeb97ed0744 /mm
parent33c3f6c2b48cd84b441dba1ee3e62290e53930f4 (diff)
downloadlwn-e04ed278d25bf15769800bf6e35c6737f137186f.tar.gz
lwn-e04ed278d25bf15769800bf6e35c6737f137186f.zip
mm/damon/stat: fix memory leak on damon_start() failure in damon_stat_start()
Destroy the DAMON context and reset the global pointer when damon_start() fails. Otherwise, the context allocated by damon_stat_build_ctx() is leaked, and the stale damon_stat_context pointer will be overwritten on the next enable attempt, making the old allocation permanently unreachable. Link: https://lore.kernel.org/20260331101553.88422-1-liu.yun@linux.dev Fixes: 369c415e6073 ("mm/damon: introduce DAMON_STAT module") Signed-off-by: Jackie Liu <liuyun01@kylinos.cn> Reviewed-by: SeongJae Park <sj@kernel.org> Cc: <stable@vger.kernel.org> # 6.17.x Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r--mm/damon/stat.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/mm/damon/stat.c b/mm/damon/stat.c
index cf2c5a541eee..5a742fc157e4 100644
--- a/mm/damon/stat.c
+++ b/mm/damon/stat.c
@@ -249,8 +249,11 @@ static int damon_stat_start(void)
if (!damon_stat_context)
return -ENOMEM;
err = damon_start(&damon_stat_context, 1, true);
- if (err)
+ if (err) {
+ damon_destroy_ctx(damon_stat_context);
+ damon_stat_context = NULL;
return err;
+ }
damon_stat_last_refresh_jiffies = jiffies;
call_control.data = damon_stat_context;