mm/damon/core-test: add a test for damos_new_filter()
authorSeongJae Park <sj@kernel.org>
Sat, 29 Jul 2023 20:37:33 +0000 (20:37 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 21 Aug 2023 20:37:33 +0000 (13:37 -0700)
damos_new_filter() was having a bug that not initializing ->list field of
the returning damos_filter struct, which results in access to
uninitialized memory.  Add a unit test for the function.

Link: https://lkml.kernel.org/r/20230729203733.38949-3-sj@kernel.org
Signed-off-by: SeongJae Park <sj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/damon/core-test.h

index bb07721..4bddbfe 100644 (file)
@@ -341,6 +341,18 @@ static void damon_test_set_attrs(struct kunit *test)
        KUNIT_EXPECT_EQ(test, damon_set_attrs(c, &invalid_attrs), -EINVAL);
 }
 
+static void damos_test_new_filter(struct kunit *test)
+{
+       struct damos_filter *filter;
+
+       filter = damos_new_filter(DAMOS_FILTER_TYPE_ANON, true);
+       KUNIT_EXPECT_EQ(test, filter->type, DAMOS_FILTER_TYPE_ANON);
+       KUNIT_EXPECT_EQ(test, filter->matching, true);
+       KUNIT_EXPECT_PTR_EQ(test, filter->list.prev, &filter->list);
+       KUNIT_EXPECT_PTR_EQ(test, filter->list.next, &filter->list);
+       damos_destroy_filter(filter);
+}
+
 static struct kunit_case damon_test_cases[] = {
        KUNIT_CASE(damon_test_target),
        KUNIT_CASE(damon_test_regions),
@@ -353,6 +365,7 @@ static struct kunit_case damon_test_cases[] = {
        KUNIT_CASE(damon_test_set_regions),
        KUNIT_CASE(damon_test_update_monitoring_result),
        KUNIT_CASE(damon_test_set_attrs),
+       KUNIT_CASE(damos_test_new_filter),
        {},
 };