* [PATCH 1/2] mm/damon/core: fix new damon_target objects leaks on damon_commit_targets()
[not found] <20241222231222.85060-1-sj@kernel.org>
@ 2024-12-22 23:12 ` SeongJae Park
2024-12-22 23:12 ` [PATCH 2/2] mm/damon/core: fix ignored quota goals and filters of newly committed schemes SeongJae Park
1 sibling, 0 replies; 2+ messages in thread
From: SeongJae Park @ 2024-12-22 23:12 UTC (permalink / raw)
To: Andrew Morton; +Cc: SeongJae Park, damon, linux-mm, linux-kernel, stable
When new DAMON targets are added via damon_commit_targets(), the newly
created targets are not deallocated when updating the internal data
(damon_commit_target()) is failed. Worse yet, even if the setup is
successfully done, the new target is not linked to the context. Hence,
the new targets are always leaked regardless of the internal data setup
failure. Fix the leaks.
Fixes: 9cb3d0b9dfce ("mm/damon/core: implement DAMON context commit function")
Cc: <stable@vger.kernel.org>
Signed-off-by: SeongJae Park <sj@kernel.org>
---
mm/damon/core.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/mm/damon/core.c b/mm/damon/core.c
index a71703e05300..931e8e4b1333 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -961,8 +961,11 @@ static int damon_commit_targets(
return -ENOMEM;
err = damon_commit_target(new_target, false,
src_target, damon_target_has_pid(src));
- if (err)
+ if (err) {
+ damon_destroy_target(new_target);
return err;
+ }
+ damon_add_target(dst, new_target);
}
return 0;
}
--
2.39.5
^ permalink raw reply related [flat|nested] 2+ messages in thread* [PATCH 2/2] mm/damon/core: fix ignored quota goals and filters of newly committed schemes
[not found] <20241222231222.85060-1-sj@kernel.org>
2024-12-22 23:12 ` [PATCH 1/2] mm/damon/core: fix new damon_target objects leaks on damon_commit_targets() SeongJae Park
@ 2024-12-22 23:12 ` SeongJae Park
1 sibling, 0 replies; 2+ messages in thread
From: SeongJae Park @ 2024-12-22 23:12 UTC (permalink / raw)
To: Andrew Morton; +Cc: SeongJae Park, damon, linux-mm, linux-kernel, stable
damon_commit_schemes() ignores quota goals and filters of the newly
committed schemes. This makes users confused about the behaviors.
Correctly handle those inputs.
Fixes: 9cb3d0b9dfce ("mm/damon/core: implement DAMON context commit function")
Cc: <stable@vger.kernel.org>
Signed-off-by: SeongJae Park <sj@kernel.org>
---
mm/damon/core.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/mm/damon/core.c b/mm/damon/core.c
index 931e8e4b1333..5192ee29f6cf 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -868,6 +868,11 @@ static int damon_commit_schemes(struct damon_ctx *dst, struct damon_ctx *src)
NUMA_NO_NODE);
if (!new_scheme)
return -ENOMEM;
+ err = damos_commit(new_scheme, src_scheme);
+ if (err) {
+ damon_destroy_scheme(new_scheme);
+ return err;
+ }
damon_add_scheme(dst, new_scheme);
}
return 0;
--
2.39.5
^ permalink raw reply related [flat|nested] 2+ messages in thread