mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
mm/damon/vaddr-kunit: check region count in three_regions test
damon_do_test_apply_three_regions() iterates regions after
damon_set_regions() call assuming the function would succeed at setting
the number of regions the same to the expected one. It might have failed.
In this case, __nth_region_of() in the iteration could return NULL and
NULL dereference can happen in the test.
The consequent user impact (NULL dereference) is quite bad. The realistic
user impact would be limited, though. It would affect only test run
setups.
Fix it by testing if the number of regions was also changed as expected
and exit early for the failure.
The issue was discovered [1] by Sashiko.
Link: https://lore.kernel.org/20260718001442.87129-4-sj@kernel.org
Link: https://lore.kernel.org/20260713144757.39740-1-sj@kernel.org [1]
Fixes: 17ccae8bb5 ("mm/damon: add kunit tests")
Signed-off-by: SJ Park <sj@kernel.org>
Cc: Brendan Higgins <brendan.higgins@linux.dev>
Cc: <stable@vger.kernel.org> # 5.15.x
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
9b18ef3c3a
commit
5fea07e460
|
|
@ -158,12 +158,17 @@ static void damon_do_test_apply_three_regions(struct kunit *test,
|
|||
kunit_skip(test, "second damon_set_regions() fail");
|
||||
}
|
||||
|
||||
KUNIT_EXPECT_EQ(test, damon_nr_regions(t), nr_expected / 2);
|
||||
if (damon_nr_regions(t) != nr_expected / 2)
|
||||
goto out;
|
||||
|
||||
for (i = 0; i < nr_expected / 2; i++) {
|
||||
r = __nth_region_of(t, i);
|
||||
KUNIT_EXPECT_EQ(test, r->ar.start, expected[i * 2]);
|
||||
KUNIT_EXPECT_EQ(test, r->ar.end, expected[i * 2 + 1]);
|
||||
}
|
||||
|
||||
out:
|
||||
damon_destroy_target(t, NULL);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user