Lines Matching full:test

24 #include <kunit/test.h>
31 * We assign some test results to these globals to make sure the tests
42 static int kasan_test_init(struct kunit *test) in kasan_test_init() argument
53 static void kasan_test_exit(struct kunit *test) in kasan_test_exit() argument
59 * KUNIT_EXPECT_KASAN_FAIL() - Causes a test failure when the expression does
64 #define KUNIT_EXPECT_KASAN_FAIL(test, condition) do { \ argument
67 kunit_add_named_resource(test, \
73 KUNIT_EXPECT_EQ(test, \
78 static void kmalloc_oob_right(struct kunit *test) in kmalloc_oob_right() argument
84 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_oob_right()
86 KUNIT_EXPECT_KASAN_FAIL(test, ptr[size + OOB_TAG_OFF] = 'x'); in kmalloc_oob_right()
90 static void kmalloc_oob_left(struct kunit *test) in kmalloc_oob_left() argument
96 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_oob_left()
98 KUNIT_EXPECT_KASAN_FAIL(test, *ptr = *(ptr - 1)); in kmalloc_oob_left()
102 static void kmalloc_node_oob_right(struct kunit *test) in kmalloc_node_oob_right() argument
108 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_node_oob_right()
110 KUNIT_EXPECT_KASAN_FAIL(test, ptr[size] = 0); in kmalloc_node_oob_right()
114 static void kmalloc_pagealloc_oob_right(struct kunit *test) in kmalloc_pagealloc_oob_right() argument
120 kunit_info(test, "CONFIG_SLUB is not enabled."); in kmalloc_pagealloc_oob_right()
128 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_pagealloc_oob_right()
130 KUNIT_EXPECT_KASAN_FAIL(test, ptr[size + OOB_TAG_OFF] = 0); in kmalloc_pagealloc_oob_right()
134 static void kmalloc_pagealloc_uaf(struct kunit *test) in kmalloc_pagealloc_uaf() argument
140 kunit_info(test, "CONFIG_SLUB is not enabled."); in kmalloc_pagealloc_uaf()
145 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_pagealloc_uaf()
148 KUNIT_EXPECT_KASAN_FAIL(test, ptr[0] = 0); in kmalloc_pagealloc_uaf()
151 static void kmalloc_pagealloc_invalid_free(struct kunit *test) in kmalloc_pagealloc_invalid_free() argument
157 kunit_info(test, "CONFIG_SLUB is not enabled."); in kmalloc_pagealloc_invalid_free()
162 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_pagealloc_invalid_free()
164 KUNIT_EXPECT_KASAN_FAIL(test, kfree(ptr + 1)); in kmalloc_pagealloc_invalid_free()
167 static void kmalloc_large_oob_right(struct kunit *test) in kmalloc_large_oob_right() argument
175 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_large_oob_right()
177 KUNIT_EXPECT_KASAN_FAIL(test, ptr[size] = 0); in kmalloc_large_oob_right()
181 static void kmalloc_oob_krealloc_more(struct kunit *test) in kmalloc_oob_krealloc_more() argument
188 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1); in kmalloc_oob_krealloc_more()
191 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2); in kmalloc_oob_krealloc_more()
193 KUNIT_EXPECT_KASAN_FAIL(test, ptr2[size2 + OOB_TAG_OFF] = 'x'); in kmalloc_oob_krealloc_more()
197 static void kmalloc_oob_krealloc_less(struct kunit *test) in kmalloc_oob_krealloc_less() argument
204 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1); in kmalloc_oob_krealloc_less()
207 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2); in kmalloc_oob_krealloc_less()
209 KUNIT_EXPECT_KASAN_FAIL(test, ptr2[size2 + OOB_TAG_OFF] = 'x'); in kmalloc_oob_krealloc_less()
213 static void kmalloc_oob_16(struct kunit *test) in kmalloc_oob_16() argument
219 /* This test is specifically crafted for the generic mode. */ in kmalloc_oob_16()
221 kunit_info(test, "CONFIG_KASAN_GENERIC required\n"); in kmalloc_oob_16()
226 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1); in kmalloc_oob_16()
229 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2); in kmalloc_oob_16()
231 KUNIT_EXPECT_KASAN_FAIL(test, *ptr1 = *ptr2); in kmalloc_oob_16()
236 static void kmalloc_uaf_16(struct kunit *test) in kmalloc_uaf_16() argument
243 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1); in kmalloc_uaf_16()
246 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2); in kmalloc_uaf_16()
249 KUNIT_EXPECT_KASAN_FAIL(test, *ptr1 = *ptr2); in kmalloc_uaf_16()
253 static void kmalloc_oob_memset_2(struct kunit *test) in kmalloc_oob_memset_2() argument
259 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_oob_memset_2()
261 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + 7 + OOB_TAG_OFF, 0, 2)); in kmalloc_oob_memset_2()
265 static void kmalloc_oob_memset_4(struct kunit *test) in kmalloc_oob_memset_4() argument
271 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_oob_memset_4()
273 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + 5 + OOB_TAG_OFF, 0, 4)); in kmalloc_oob_memset_4()
278 static void kmalloc_oob_memset_8(struct kunit *test) in kmalloc_oob_memset_8() argument
284 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_oob_memset_8()
286 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + 1 + OOB_TAG_OFF, 0, 8)); in kmalloc_oob_memset_8()
290 static void kmalloc_oob_memset_16(struct kunit *test) in kmalloc_oob_memset_16() argument
296 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_oob_memset_16()
298 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + 1 + OOB_TAG_OFF, 0, 16)); in kmalloc_oob_memset_16()
302 static void kmalloc_oob_in_memset(struct kunit *test) in kmalloc_oob_in_memset() argument
308 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_oob_in_memset()
310 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr, 0, size + 5 + OOB_TAG_OFF)); in kmalloc_oob_in_memset()
314 static void kmalloc_memmove_invalid_size(struct kunit *test) in kmalloc_memmove_invalid_size() argument
321 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_memmove_invalid_size()
325 KUNIT_EXPECT_KASAN_FAIL(test, in kmalloc_memmove_invalid_size()
330 static void kmalloc_uaf(struct kunit *test) in kmalloc_uaf() argument
336 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_uaf()
339 KUNIT_EXPECT_KASAN_FAIL(test, *(ptr + 8) = 'x'); in kmalloc_uaf()
342 static void kmalloc_uaf_memset(struct kunit *test) in kmalloc_uaf_memset() argument
348 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_uaf_memset()
351 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr, 0, size)); in kmalloc_uaf_memset()
354 static void kmalloc_uaf2(struct kunit *test) in kmalloc_uaf2() argument
360 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1); in kmalloc_uaf2()
365 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2); in kmalloc_uaf2()
367 KUNIT_EXPECT_KASAN_FAIL(test, ptr1[40] = 'x'); in kmalloc_uaf2()
368 KUNIT_EXPECT_PTR_NE(test, ptr1, ptr2); in kmalloc_uaf2()
373 static void kfree_via_page(struct kunit *test) in kfree_via_page() argument
381 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kfree_via_page()
388 static void kfree_via_phys(struct kunit *test) in kfree_via_phys() argument
395 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kfree_via_phys()
401 static void kmem_cache_oob(struct kunit *test) in kmem_cache_oob() argument
408 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache); in kmem_cache_oob()
411 kunit_err(test, "Allocation failed: %s\n", __func__); in kmem_cache_oob()
416 KUNIT_EXPECT_KASAN_FAIL(test, *p = p[size + OOB_TAG_OFF]); in kmem_cache_oob()
421 static void memcg_accounted_kmem_cache(struct kunit *test) in memcg_accounted_kmem_cache() argument
429 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache); in memcg_accounted_kmem_cache()
450 static void kasan_global_oob(struct kunit *test) in kasan_global_oob() argument
457 kunit_info(test, "CONFIG_KASAN_GENERIC required"); in kasan_global_oob()
461 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p); in kasan_global_oob()
464 static void ksize_unpoisons_memory(struct kunit *test) in ksize_unpoisons_memory() argument
470 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in ksize_unpoisons_memory()
475 KUNIT_EXPECT_KASAN_FAIL(test, ptr[real_size] = 'y'); in ksize_unpoisons_memory()
479 static void kasan_stack_oob(struct kunit *test) in kasan_stack_oob() argument
486 kunit_info(test, "CONFIG_KASAN_STACK is not enabled"); in kasan_stack_oob()
490 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p); in kasan_stack_oob()
493 static void kasan_alloca_oob_left(struct kunit *test) in kasan_alloca_oob_left() argument
501 kunit_info(test, "CONFIG_KASAN_GENERIC required"); in kasan_alloca_oob_left()
506 kunit_info(test, "CONFIG_KASAN_STACK is not enabled"); in kasan_alloca_oob_left()
510 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p); in kasan_alloca_oob_left()
513 static void kasan_alloca_oob_right(struct kunit *test) in kasan_alloca_oob_right() argument
521 kunit_info(test, "CONFIG_KASAN_GENERIC required"); in kasan_alloca_oob_right()
526 kunit_info(test, "CONFIG_KASAN_STACK is not enabled"); in kasan_alloca_oob_right()
530 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p); in kasan_alloca_oob_right()
533 static void kmem_cache_double_free(struct kunit *test) in kmem_cache_double_free() argument
540 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache); in kmem_cache_double_free()
544 kunit_err(test, "Allocation failed: %s\n", __func__); in kmem_cache_double_free()
550 KUNIT_EXPECT_KASAN_FAIL(test, kmem_cache_free(cache, p)); in kmem_cache_double_free()
554 static void kmem_cache_invalid_free(struct kunit *test) in kmem_cache_invalid_free() argument
562 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache); in kmem_cache_invalid_free()
566 kunit_err(test, "Allocation failed: %s\n", __func__); in kmem_cache_invalid_free()
572 KUNIT_EXPECT_KASAN_FAIL(test, kmem_cache_free(cache, p + 1)); in kmem_cache_invalid_free()
583 static void kasan_memchr(struct kunit *test) in kasan_memchr() argument
590 kunit_info(test, in kasan_memchr()
599 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kasan_memchr()
601 KUNIT_EXPECT_KASAN_FAIL(test, in kasan_memchr()
607 static void kasan_memcmp(struct kunit *test) in kasan_memcmp() argument
615 kunit_info(test, in kasan_memcmp()
624 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kasan_memcmp()
627 KUNIT_EXPECT_KASAN_FAIL(test, in kasan_memcmp()
632 static void kasan_strings(struct kunit *test) in kasan_strings() argument
639 kunit_info(test, in kasan_strings()
645 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kasan_strings()
656 KUNIT_EXPECT_KASAN_FAIL(test, kasan_ptr_result = strchr(ptr, '1')); in kasan_strings()
658 KUNIT_EXPECT_KASAN_FAIL(test, kasan_ptr_result = strrchr(ptr, '1')); in kasan_strings()
660 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strcmp(ptr, "2")); in kasan_strings()
662 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strncmp(ptr, "2", 1)); in kasan_strings()
664 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strlen(ptr)); in kasan_strings()
666 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strnlen(ptr, 1)); in kasan_strings()
669 static void kasan_bitops_modify(struct kunit *test, int nr, void *addr) in kasan_bitops_modify() argument
671 KUNIT_EXPECT_KASAN_FAIL(test, set_bit(nr, addr)); in kasan_bitops_modify()
672 KUNIT_EXPECT_KASAN_FAIL(test, __set_bit(nr, addr)); in kasan_bitops_modify()
673 KUNIT_EXPECT_KASAN_FAIL(test, clear_bit(nr, addr)); in kasan_bitops_modify()
674 KUNIT_EXPECT_KASAN_FAIL(test, __clear_bit(nr, addr)); in kasan_bitops_modify()
675 KUNIT_EXPECT_KASAN_FAIL(test, clear_bit_unlock(nr, addr)); in kasan_bitops_modify()
676 KUNIT_EXPECT_KASAN_FAIL(test, __clear_bit_unlock(nr, addr)); in kasan_bitops_modify()
677 KUNIT_EXPECT_KASAN_FAIL(test, change_bit(nr, addr)); in kasan_bitops_modify()
678 KUNIT_EXPECT_KASAN_FAIL(test, __change_bit(nr, addr)); in kasan_bitops_modify()
681 static void kasan_bitops_test_and_modify(struct kunit *test, int nr, void *addr) in kasan_bitops_test_and_modify() argument
683 KUNIT_EXPECT_KASAN_FAIL(test, test_and_set_bit(nr, addr)); in kasan_bitops_test_and_modify()
684 KUNIT_EXPECT_KASAN_FAIL(test, __test_and_set_bit(nr, addr)); in kasan_bitops_test_and_modify()
685 KUNIT_EXPECT_KASAN_FAIL(test, test_and_set_bit_lock(nr, addr)); in kasan_bitops_test_and_modify()
686 KUNIT_EXPECT_KASAN_FAIL(test, test_and_clear_bit(nr, addr)); in kasan_bitops_test_and_modify()
687 KUNIT_EXPECT_KASAN_FAIL(test, __test_and_clear_bit(nr, addr)); in kasan_bitops_test_and_modify()
688 KUNIT_EXPECT_KASAN_FAIL(test, test_and_change_bit(nr, addr)); in kasan_bitops_test_and_modify()
689 KUNIT_EXPECT_KASAN_FAIL(test, __test_and_change_bit(nr, addr)); in kasan_bitops_test_and_modify()
690 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = test_bit(nr, addr)); in kasan_bitops_test_and_modify()
693 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = in kasan_bitops_test_and_modify()
698 static void kasan_bitops_generic(struct kunit *test) in kasan_bitops_generic() argument
702 /* This test is specifically crafted for the generic mode. */ in kasan_bitops_generic()
704 kunit_info(test, "CONFIG_KASAN_GENERIC required\n"); in kasan_bitops_generic()
713 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, bits); in kasan_bitops_generic()
720 kasan_bitops_modify(test, BITS_PER_LONG, bits); in kasan_bitops_generic()
725 kasan_bitops_test_and_modify(test, BITS_PER_LONG + BITS_PER_BYTE, bits); in kasan_bitops_generic()
730 static void kasan_bitops_tags(struct kunit *test) in kasan_bitops_tags() argument
734 /* This test is specifically crafted for the tag-based mode. */ in kasan_bitops_tags()
736 kunit_info(test, "CONFIG_KASAN_SW_TAGS required\n"); in kasan_bitops_tags()
742 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, bits); in kasan_bitops_tags()
745 kasan_bitops_modify(test, BITS_PER_LONG, &bits[1]); in kasan_bitops_tags()
746 kasan_bitops_test_and_modify(test, BITS_PER_LONG + BITS_PER_BYTE, &bits[1]); in kasan_bitops_tags()
751 static void kmalloc_double_kzfree(struct kunit *test) in kmalloc_double_kzfree() argument
757 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_double_kzfree()
760 KUNIT_EXPECT_KASAN_FAIL(test, kfree_sensitive(ptr)); in kmalloc_double_kzfree()
763 static void vmalloc_oob(struct kunit *test) in vmalloc_oob() argument
768 kunit_info(test, "CONFIG_KASAN_VMALLOC is not enabled."); in vmalloc_oob()
777 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, area); in vmalloc_oob()
779 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)area)[3100]); in vmalloc_oob()