* [PATCH 0/2] mm/damon/core: fix memory leaks and ignored inputs from damon_commit_ctx()
@ 2024-12-22 23:12 SeongJae Park
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 ` [PATCH 2/2] mm/damon/core: fix ignored quota goals and filters of newly committed schemes SeongJae Park
0 siblings, 2 replies; 3+ 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
Due to two bugs in damon_commit_targets() and damon_commit_schemes(),
which are called from damon_commit_ctx(), some user inputs can be
ignored, and some mmeory objects can be leaked. Fix those.
Note that only DAMON sysfs interface users are affected. Other DAMON
core API user modules that more focused more on simple and dedicated
production usages, including DAMON_RECLAIM and DAMON_LRU_SORT are not
using the buggy function in the way, so not affected.
SeongJae Park (2):
mm/damon/core: fix new damon_target objects leaks on
damon_commit_targets()
mm/damon/core: fix ignored quota goals and filters of newly committed
schemes
mm/damon/core.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
base-commit: a2b6c37664ce2d7ab39837dae4078fcb01078f13
--
2.39.5
^ permalink raw reply [flat|nested] 3+ messages in thread* [PATCH 1/2] mm/damon/core: fix new damon_target objects leaks on damon_commit_targets()
2024-12-22 23:12 [PATCH 0/2] mm/damon/core: fix memory leaks and ignored inputs from damon_commit_ctx() SeongJae Park
@ 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; 3+ 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 [flat|nested] 3+ messages in thread* [PATCH 2/2] mm/damon/core: fix ignored quota goals and filters of newly committed schemes
2024-12-22 23:12 [PATCH 0/2] mm/damon/core: fix memory leaks and ignored inputs from damon_commit_ctx() SeongJae Park
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; 3+ 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 [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-12-22 23:12 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-12-22 23:12 [PATCH 0/2] mm/damon/core: fix memory leaks and ignored inputs from damon_commit_ctx() SeongJae Park
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 ` [PATCH 2/2] mm/damon/core: fix ignored quota goals and filters of newly committed schemes SeongJae Park
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox