Skip to content

Commit f9045bb

Browse files
hqszgregkh
authored andcommitted
mm/damon/core: fix commit_ops_filters by using correct nth function
commit 63f5dec upstream. 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: 3607cc5 ("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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 34ed1f9 commit f9045bb

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

mm/damon/core.c

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -843,6 +843,18 @@ static struct damos_filter *damos_nth_filter(int n, struct damos *s)
843843
return NULL;
844844
}
845845

846+
static struct damos_filter *damos_nth_ops_filter(int n, struct damos *s)
847+
{
848+
struct damos_filter *filter;
849+
int i = 0;
850+
851+
damos_for_each_ops_filter(filter, s) {
852+
if (i++ == n)
853+
return filter;
854+
}
855+
return NULL;
856+
}
857+
846858
static void damos_commit_filter_arg(
847859
struct damos_filter *dst, struct damos_filter *src)
848860
{
@@ -906,7 +918,7 @@ static int damos_commit_ops_filters(struct damos *dst, struct damos *src)
906918
int i = 0, j = 0;
907919

908920
damos_for_each_ops_filter_safe(dst_filter, next, dst) {
909-
src_filter = damos_nth_filter(i++, src);
921+
src_filter = damos_nth_ops_filter(i++, src);
910922
if (src_filter)
911923
damos_commit_filter(dst_filter, src_filter);
912924
else

0 commit comments

Comments
 (0)