aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorSang-Heon Jeon <ekffu200098@gmail.com>2025-08-10 21:42:01 +0900
committerAndrew Morton <akpm@linux-foundation.org>2025-08-19 16:35:54 -0700
commit63f5dec16760f2cd7d3f9034d18fc1fa0d83652f (patch)
tree4b67ca80aaf889a440d33e6474b05816dd9a5b2d
parenttools/testing: add linux/args.h header and fix radix, VMA tests (diff)
downloadwireguard-linux-63f5dec16760f2cd7d3f9034d18fc1fa0d83652f.tar.xz
wireguard-linux-63f5dec16760f2cd7d3f9034d18fc1fa0d83652f.zip
mm/damon/core: fix commit_ops_filters by using correct nth function
damos_commit_ops_filters() incorrectly uses damos_nth_filter() which iterates core_filters. As a result, performing a commit unintentionally corrupts ops_filters. Add damos_nth_ops_filter() which iterates ops_filters. Use this function to fix issues caused by wrong iteration. Link: https://lkml.kernel.org/r/20250810124201.15743-1-ekffu200098@gmail.com Fixes: 3607cc590f18 ("mm/damon/core: support committing ops_filters") # 6.15.x Signed-off-by: Sang-Heon Jeon <ekffu200098@gmail.com> Reviewed-by: SeongJae Park <sj@kernel.org> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-rw-r--r--mm/damon/core.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/mm/damon/core.c b/mm/damon/core.c
index 52a48c9316bc..467c2d78126f 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -845,6 +845,18 @@ static struct damos_filter *damos_nth_filter(int n, struct damos *s)
return NULL;
}
+static struct damos_filter *damos_nth_ops_filter(int n, struct damos *s)
+{
+ struct damos_filter *filter;
+ int i = 0;
+
+ damos_for_each_ops_filter(filter, s) {
+ if (i++ == n)
+ return filter;
+ }
+ return NULL;
+}
+
static void damos_commit_filter_arg(
struct damos_filter *dst, struct damos_filter *src)
{
@@ -908,7 +920,7 @@ static int damos_commit_ops_filters(struct damos *dst, struct damos *src)
int i = 0, j = 0;
damos_for_each_ops_filter_safe(dst_filter, next, dst) {
- src_filter = damos_nth_filter(i++, src);
+ src_filter = damos_nth_ops_filter(i++, src);
if (src_filter)
damos_commit_filter(dst_filter, src_filter);
else