99#include <kunit/test.h>
1010#include <kunit/attributes.h>
1111
12- static void kfree_at_end (struct kunit * test , const void * to_free );
12+ static void free_suite_set_at_end (struct kunit * test , const void * to_free );
1313static struct kunit_suite * alloc_fake_suite (struct kunit * test ,
1414 const char * suite_name ,
1515 struct kunit_case * test_cases );
@@ -56,7 +56,7 @@ static void filter_suites_test(struct kunit *test)
5656 got = kunit_filter_suites (& suite_set , "suite2" , NULL , NULL , & err );
5757 KUNIT_ASSERT_NOT_ERR_OR_NULL (test , got .start );
5858 KUNIT_ASSERT_EQ (test , err , 0 );
59- kfree_at_end (test , got . start );
59+ free_suite_set_at_end (test , & got );
6060
6161 /* Validate we just have suite2 */
6262 KUNIT_ASSERT_NOT_ERR_OR_NULL (test , got .start [0 ]);
@@ -82,7 +82,7 @@ static void filter_suites_test_glob_test(struct kunit *test)
8282 got = kunit_filter_suites (& suite_set , "suite2.test2" , NULL , NULL , & err );
8383 KUNIT_ASSERT_NOT_ERR_OR_NULL (test , got .start );
8484 KUNIT_ASSERT_EQ (test , err , 0 );
85- kfree_at_end (test , got . start );
85+ free_suite_set_at_end (test , & got );
8686
8787 /* Validate we just have suite2 */
8888 KUNIT_ASSERT_NOT_ERR_OR_NULL (test , got .start [0 ]);
@@ -109,7 +109,7 @@ static void filter_suites_to_empty_test(struct kunit *test)
109109
110110 got = kunit_filter_suites (& suite_set , "not_found" , NULL , NULL , & err );
111111 KUNIT_ASSERT_EQ (test , err , 0 );
112- kfree_at_end (test , got . start ); /* just in case */
112+ free_suite_set_at_end (test , & got ); /* just in case */
113113
114114 KUNIT_EXPECT_PTR_EQ_MSG (test , got .start , got .end ,
115115 "should be empty to indicate no match" );
@@ -172,7 +172,7 @@ static void filter_attr_test(struct kunit *test)
172172 got = kunit_filter_suites (& suite_set , NULL , filter , NULL , & err );
173173 KUNIT_ASSERT_NOT_ERR_OR_NULL (test , got .start );
174174 KUNIT_ASSERT_EQ (test , err , 0 );
175- kfree_at_end (test , got . start );
175+ free_suite_set_at_end (test , & got );
176176
177177 /* Validate we just have normal_suite */
178178 KUNIT_ASSERT_NOT_ERR_OR_NULL (test , got .start [0 ]);
@@ -200,7 +200,7 @@ static void filter_attr_empty_test(struct kunit *test)
200200
201201 got = kunit_filter_suites (& suite_set , NULL , filter , NULL , & err );
202202 KUNIT_ASSERT_EQ (test , err , 0 );
203- kfree_at_end (test , got . start ); /* just in case */
203+ free_suite_set_at_end (test , & got ); /* just in case */
204204
205205 KUNIT_EXPECT_PTR_EQ_MSG (test , got .start , got .end ,
206206 "should be empty to indicate no match" );
@@ -222,7 +222,7 @@ static void filter_attr_skip_test(struct kunit *test)
222222 got = kunit_filter_suites (& suite_set , NULL , filter , "skip" , & err );
223223 KUNIT_ASSERT_NOT_ERR_OR_NULL (test , got .start );
224224 KUNIT_ASSERT_EQ (test , err , 0 );
225- kfree_at_end (test , got . start );
225+ free_suite_set_at_end (test , & got );
226226
227227 /* Validate we have both the slow and normal test */
228228 KUNIT_ASSERT_NOT_ERR_OR_NULL (test , got .start [0 ]-> test_cases );
@@ -256,18 +256,26 @@ kunit_test_suites(&executor_test_suite);
256256
257257/* Test helpers */
258258
259- /* Use the resource API to register a call to kfree(to_free).
259+ static void free_suite_set (void * suite_set )
260+ {
261+ kunit_free_suite_set (* (struct kunit_suite_set * )suite_set );
262+ kfree (suite_set );
263+ }
264+
265+ /* Use the resource API to register a call to free_suite_set.
260266 * Since we never actually use the resource, it's safe to use on const data.
261267 */
262- static void kfree_at_end (struct kunit * test , const void * to_free )
268+ static void free_suite_set_at_end (struct kunit * test , const void * to_free )
263269{
264- /* kfree() handles NULL already, but avoid allocating a no-op cleanup. */
265- if (IS_ERR_OR_NULL (to_free ))
270+ struct kunit_suite_set * free ;
271+
272+ if (!((struct kunit_suite_set * )to_free )-> start )
266273 return ;
267274
268- kunit_add_action (test ,
269- (kunit_action_t * )kfree ,
270- (void * )to_free );
275+ free = kzalloc (sizeof (struct kunit_suite_set ), GFP_KERNEL );
276+ * free = * (struct kunit_suite_set * )to_free ;
277+
278+ kunit_add_action (test , free_suite_set , (void * )free );
271279}
272280
273281static struct kunit_suite * alloc_fake_suite (struct kunit * test ,
0 commit comments