Lines Matching full:test
10 #include <kunit/test.h>
88 static void kasan_test_exit(struct kunit *test) in kasan_test_exit() argument
90 KUNIT_EXPECT_FALSE(test, READ_ONCE(test_status.report_found)); in kasan_test_exit()
95 * KASAN report; causes a test failure otherwise. This relies on a KUnit
100 * checking is auto-disabled. When this happens, this test handler reenables
114 #define KUNIT_EXPECT_KASAN_FAIL(test, expression) do { \ argument
118 KUNIT_EXPECT_FALSE(test, READ_ONCE(test_status.report_found)); \
125 KUNIT_FAIL(test, KUNIT_SUBTEST_INDENT "KASAN failure " \
140 #define KASAN_TEST_NEEDS_CONFIG_ON(test, config) do { \ argument
142 kunit_skip((test), "Test requires " #config "=y"); \
145 #define KASAN_TEST_NEEDS_CONFIG_OFF(test, config) do { \ argument
147 kunit_skip((test), "Test requires " #config "=n"); \
150 #define KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test) do { \ argument
156 kunit_skip((test), "Test requires checked mem*()"); \
159 static void kmalloc_oob_right(struct kunit *test) in kmalloc_oob_right() argument
165 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_oob_right()
173 KUNIT_EXPECT_KASAN_FAIL(test, ptr[size] = 'x'); in kmalloc_oob_right()
179 KUNIT_EXPECT_KASAN_FAIL(test, ptr[size + 5] = 'y'); in kmalloc_oob_right()
182 KUNIT_EXPECT_KASAN_FAIL(test, ptr[0] = in kmalloc_oob_right()
188 static void kmalloc_oob_left(struct kunit *test) in kmalloc_oob_left() argument
194 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_oob_left()
197 KUNIT_EXPECT_KASAN_FAIL(test, *ptr = *(ptr - 1)); in kmalloc_oob_left()
201 static void kmalloc_node_oob_right(struct kunit *test) in kmalloc_node_oob_right() argument
207 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_node_oob_right()
210 KUNIT_EXPECT_KASAN_FAIL(test, ptr[0] = ptr[size]); in kmalloc_node_oob_right()
220 static void kmalloc_pagealloc_oob_right(struct kunit *test) in kmalloc_pagealloc_oob_right() argument
225 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_SLUB); in kmalloc_pagealloc_oob_right()
228 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_pagealloc_oob_right()
231 KUNIT_EXPECT_KASAN_FAIL(test, ptr[size + OOB_TAG_OFF] = 0); in kmalloc_pagealloc_oob_right()
236 static void kmalloc_pagealloc_uaf(struct kunit *test) in kmalloc_pagealloc_uaf() argument
241 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_SLUB); in kmalloc_pagealloc_uaf()
244 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_pagealloc_uaf()
247 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[0]); in kmalloc_pagealloc_uaf()
250 static void kmalloc_pagealloc_invalid_free(struct kunit *test) in kmalloc_pagealloc_invalid_free() argument
255 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_SLUB); in kmalloc_pagealloc_invalid_free()
258 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_pagealloc_invalid_free()
260 KUNIT_EXPECT_KASAN_FAIL(test, kfree(ptr + 1)); in kmalloc_pagealloc_invalid_free()
263 static void pagealloc_oob_right(struct kunit *test) in pagealloc_oob_right() argument
275 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC); in pagealloc_oob_right()
279 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in pagealloc_oob_right()
281 KUNIT_EXPECT_KASAN_FAIL(test, ptr[0] = ptr[size]); in pagealloc_oob_right()
285 static void pagealloc_uaf(struct kunit *test) in pagealloc_uaf() argument
293 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in pagealloc_uaf()
296 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[0]); in pagealloc_uaf()
299 static void kmalloc_large_oob_right(struct kunit *test) in kmalloc_large_oob_right() argument
309 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_large_oob_right()
312 KUNIT_EXPECT_KASAN_FAIL(test, ptr[size] = 0); in kmalloc_large_oob_right()
316 static void krealloc_more_oob_helper(struct kunit *test, in krealloc_more_oob_helper() argument
322 KUNIT_ASSERT_LT(test, size1, size2); in krealloc_more_oob_helper()
326 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1); in krealloc_more_oob_helper()
329 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2); in krealloc_more_oob_helper()
342 KUNIT_EXPECT_KASAN_FAIL(test, ptr2[size2] = 'x'); in krealloc_more_oob_helper()
345 KUNIT_EXPECT_KASAN_FAIL(test, in krealloc_more_oob_helper()
351 static void krealloc_less_oob_helper(struct kunit *test, in krealloc_less_oob_helper() argument
357 KUNIT_ASSERT_LT(test, size2, size1); in krealloc_less_oob_helper()
361 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1); in krealloc_less_oob_helper()
364 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2); in krealloc_less_oob_helper()
374 KUNIT_EXPECT_KASAN_FAIL(test, ptr2[size2] = 'x'); in krealloc_less_oob_helper()
377 KUNIT_EXPECT_KASAN_FAIL(test, in krealloc_less_oob_helper()
384 KUNIT_EXPECT_LE(test, round_up(size2, KASAN_GRANULE_SIZE), in krealloc_less_oob_helper()
386 KUNIT_EXPECT_LE(test, round_up(middle, KASAN_GRANULE_SIZE), in krealloc_less_oob_helper()
388 KUNIT_EXPECT_KASAN_FAIL(test, ptr2[middle] = 'x'); in krealloc_less_oob_helper()
389 KUNIT_EXPECT_KASAN_FAIL(test, ptr2[size1 - 1] = 'x'); in krealloc_less_oob_helper()
390 KUNIT_EXPECT_KASAN_FAIL(test, ptr2[size1] = 'x'); in krealloc_less_oob_helper()
395 static void krealloc_more_oob(struct kunit *test) in krealloc_more_oob() argument
397 krealloc_more_oob_helper(test, 201, 235); in krealloc_more_oob()
400 static void krealloc_less_oob(struct kunit *test) in krealloc_less_oob() argument
402 krealloc_less_oob_helper(test, 235, 201); in krealloc_less_oob()
405 static void krealloc_pagealloc_more_oob(struct kunit *test) in krealloc_pagealloc_more_oob() argument
408 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_SLUB); in krealloc_pagealloc_more_oob()
410 krealloc_more_oob_helper(test, KMALLOC_MAX_CACHE_SIZE + 201, in krealloc_pagealloc_more_oob()
414 static void krealloc_pagealloc_less_oob(struct kunit *test) in krealloc_pagealloc_less_oob() argument
417 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_SLUB); in krealloc_pagealloc_less_oob()
419 krealloc_less_oob_helper(test, KMALLOC_MAX_CACHE_SIZE + 235, in krealloc_pagealloc_less_oob()
427 static void krealloc_uaf(struct kunit *test) in krealloc_uaf() argument
434 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1); in krealloc_uaf()
437 KUNIT_EXPECT_KASAN_FAIL(test, ptr2 = krealloc(ptr1, size2, GFP_KERNEL)); in krealloc_uaf()
438 KUNIT_ASSERT_NULL(test, ptr2); in krealloc_uaf()
439 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)ptr1); in krealloc_uaf()
442 static void kmalloc_oob_16(struct kunit *test) in kmalloc_oob_16() argument
448 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); in kmalloc_oob_16()
450 /* This test is specifically crafted for the generic mode. */ in kmalloc_oob_16()
451 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC); in kmalloc_oob_16()
454 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1); in kmalloc_oob_16()
457 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2); in kmalloc_oob_16()
461 KUNIT_EXPECT_KASAN_FAIL(test, *ptr1 = *ptr2); in kmalloc_oob_16()
466 static void kmalloc_uaf_16(struct kunit *test) in kmalloc_uaf_16() argument
472 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); in kmalloc_uaf_16()
475 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1); in kmalloc_uaf_16()
478 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2); in kmalloc_uaf_16()
481 KUNIT_EXPECT_KASAN_FAIL(test, *ptr1 = *ptr2); in kmalloc_uaf_16()
491 static void kmalloc_oob_memset_2(struct kunit *test) in kmalloc_oob_memset_2() argument
496 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); in kmalloc_oob_memset_2()
499 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_oob_memset_2()
502 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 1, 0, 2)); in kmalloc_oob_memset_2()
506 static void kmalloc_oob_memset_4(struct kunit *test) in kmalloc_oob_memset_4() argument
511 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); in kmalloc_oob_memset_4()
514 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_oob_memset_4()
517 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 3, 0, 4)); in kmalloc_oob_memset_4()
521 static void kmalloc_oob_memset_8(struct kunit *test) in kmalloc_oob_memset_8() argument
526 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); in kmalloc_oob_memset_8()
529 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_oob_memset_8()
532 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 7, 0, 8)); in kmalloc_oob_memset_8()
536 static void kmalloc_oob_memset_16(struct kunit *test) in kmalloc_oob_memset_16() argument
541 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); in kmalloc_oob_memset_16()
544 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_oob_memset_16()
547 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 15, 0, 16)); in kmalloc_oob_memset_16()
551 static void kmalloc_oob_in_memset(struct kunit *test) in kmalloc_oob_in_memset() argument
556 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); in kmalloc_oob_in_memset()
559 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_oob_in_memset()
563 KUNIT_EXPECT_KASAN_FAIL(test, in kmalloc_oob_in_memset()
568 static void kmalloc_memmove_negative_size(struct kunit *test) in kmalloc_memmove_negative_size() argument
574 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); in kmalloc_memmove_negative_size()
578 * As a result, this test introduces a side-effect memory corruption, in kmalloc_memmove_negative_size()
581 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_HW_TAGS); in kmalloc_memmove_negative_size()
584 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_memmove_negative_size()
589 KUNIT_EXPECT_KASAN_FAIL(test, in kmalloc_memmove_negative_size()
594 static void kmalloc_memmove_invalid_size(struct kunit *test) in kmalloc_memmove_invalid_size() argument
600 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); in kmalloc_memmove_invalid_size()
603 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_memmove_invalid_size()
608 KUNIT_EXPECT_KASAN_FAIL(test, in kmalloc_memmove_invalid_size()
613 static void kmalloc_uaf(struct kunit *test) in kmalloc_uaf() argument
619 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_uaf()
622 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[8]); in kmalloc_uaf()
625 static void kmalloc_uaf_memset(struct kunit *test) in kmalloc_uaf_memset() argument
630 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); in kmalloc_uaf_memset()
634 * kernel memory corruption this test causes. in kmalloc_uaf_memset()
636 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC); in kmalloc_uaf_memset()
639 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_uaf_memset()
642 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr, 0, size)); in kmalloc_uaf_memset()
645 static void kmalloc_uaf2(struct kunit *test) in kmalloc_uaf2() argument
653 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1); in kmalloc_uaf2()
658 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2); in kmalloc_uaf2()
669 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr1)[40]); in kmalloc_uaf2()
670 KUNIT_EXPECT_PTR_NE(test, ptr1, ptr2); in kmalloc_uaf2()
679 static void kmalloc_uaf3(struct kunit *test) in kmalloc_uaf3() argument
684 /* This test is specifically crafted for tag-based modes. */ in kmalloc_uaf3()
685 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC); in kmalloc_uaf3()
688 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1); in kmalloc_uaf3()
692 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2); in kmalloc_uaf3()
695 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr1)[8]); in kmalloc_uaf3()
698 static void kfree_via_page(struct kunit *test) in kfree_via_page() argument
706 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kfree_via_page()
713 static void kfree_via_phys(struct kunit *test) in kfree_via_phys() argument
720 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kfree_via_phys()
726 static void kmem_cache_oob(struct kunit *test) in kmem_cache_oob() argument
733 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache); in kmem_cache_oob()
737 kunit_err(test, "Allocation failed: %s\n", __func__); in kmem_cache_oob()
742 KUNIT_EXPECT_KASAN_FAIL(test, *p = p[size + OOB_TAG_OFF]); in kmem_cache_oob()
748 static void kmem_cache_accounted(struct kunit *test) in kmem_cache_accounted() argument
756 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache); in kmem_cache_accounted()
775 static void kmem_cache_bulk(struct kunit *test) in kmem_cache_bulk() argument
784 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache); in kmem_cache_bulk()
788 kunit_err(test, "Allocation failed: %s\n", __func__); in kmem_cache_bulk()
802 static void kasan_global_oob_right(struct kunit *test) in kasan_global_oob_right() argument
820 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC); in kasan_global_oob_right()
822 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p); in kasan_global_oob_right()
825 static void kasan_global_oob_left(struct kunit *test) in kasan_global_oob_left() argument
831 * GCC is known to fail this test, skip it. in kasan_global_oob_left()
834 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_CC_IS_CLANG); in kasan_global_oob_left()
835 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC); in kasan_global_oob_left()
836 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p); in kasan_global_oob_left()
840 static void ksize_unpoisons_memory(struct kunit *test) in ksize_unpoisons_memory() argument
847 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in ksize_unpoisons_memory()
850 KUNIT_EXPECT_GT(test, real_size, size); in ksize_unpoisons_memory()
860 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[size]); in ksize_unpoisons_memory()
861 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[size + 5]); in ksize_unpoisons_memory()
862 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[real_size - 1]); in ksize_unpoisons_memory()
871 static void ksize_uaf(struct kunit *test) in ksize_uaf() argument
877 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in ksize_uaf()
881 KUNIT_EXPECT_KASAN_FAIL(test, ksize(ptr)); in ksize_uaf()
882 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[0]); in ksize_uaf()
883 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[size]); in ksize_uaf()
886 static void kasan_stack_oob(struct kunit *test) in kasan_stack_oob() argument
893 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_STACK); in kasan_stack_oob()
895 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p); in kasan_stack_oob()
898 static void kasan_alloca_oob_left(struct kunit *test) in kasan_alloca_oob_left() argument
907 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC); in kasan_alloca_oob_left()
908 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_STACK); in kasan_alloca_oob_left()
910 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p); in kasan_alloca_oob_left()
913 static void kasan_alloca_oob_right(struct kunit *test) in kasan_alloca_oob_right() argument
922 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC); in kasan_alloca_oob_right()
923 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_STACK); in kasan_alloca_oob_right()
925 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p); in kasan_alloca_oob_right()
928 static void kmem_cache_double_free(struct kunit *test) in kmem_cache_double_free() argument
935 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache); in kmem_cache_double_free()
939 kunit_err(test, "Allocation failed: %s\n", __func__); in kmem_cache_double_free()
945 KUNIT_EXPECT_KASAN_FAIL(test, kmem_cache_free(cache, p)); in kmem_cache_double_free()
949 static void kmem_cache_invalid_free(struct kunit *test) in kmem_cache_invalid_free() argument
957 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache); in kmem_cache_invalid_free()
961 kunit_err(test, "Allocation failed: %s\n", __func__); in kmem_cache_invalid_free()
967 KUNIT_EXPECT_KASAN_FAIL(test, kmem_cache_free(cache, p + 1)); in kmem_cache_invalid_free()
980 static void kmem_cache_double_destroy(struct kunit *test) in kmem_cache_double_destroy() argument
986 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache); in kmem_cache_double_destroy()
988 KUNIT_EXPECT_KASAN_FAIL(test, kmem_cache_destroy(cache)); in kmem_cache_double_destroy()
991 static void kasan_memchr(struct kunit *test) in kasan_memchr() argument
1000 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_AMD_MEM_ENCRYPT); in kasan_memchr()
1006 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kasan_memchr()
1010 KUNIT_EXPECT_KASAN_FAIL(test, in kasan_memchr()
1016 static void kasan_memcmp(struct kunit *test) in kasan_memcmp() argument
1026 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_AMD_MEM_ENCRYPT); in kasan_memcmp()
1032 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kasan_memcmp()
1037 KUNIT_EXPECT_KASAN_FAIL(test, in kasan_memcmp()
1042 static void kasan_strings(struct kunit *test) in kasan_strings() argument
1051 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_AMD_MEM_ENCRYPT); in kasan_strings()
1054 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kasan_strings()
1065 KUNIT_EXPECT_KASAN_FAIL(test, kasan_ptr_result = strchr(ptr, '1')); in kasan_strings()
1067 KUNIT_EXPECT_KASAN_FAIL(test, kasan_ptr_result = strrchr(ptr, '1')); in kasan_strings()
1069 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strcmp(ptr, "2")); in kasan_strings()
1071 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strncmp(ptr, "2", 1)); in kasan_strings()
1073 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strlen(ptr)); in kasan_strings()
1075 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strnlen(ptr, 1)); in kasan_strings()
1078 static void kasan_bitops_modify(struct kunit *test, int nr, void *addr) in kasan_bitops_modify() argument
1080 KUNIT_EXPECT_KASAN_FAIL(test, set_bit(nr, addr)); in kasan_bitops_modify()
1081 KUNIT_EXPECT_KASAN_FAIL(test, __set_bit(nr, addr)); in kasan_bitops_modify()
1082 KUNIT_EXPECT_KASAN_FAIL(test, clear_bit(nr, addr)); in kasan_bitops_modify()
1083 KUNIT_EXPECT_KASAN_FAIL(test, __clear_bit(nr, addr)); in kasan_bitops_modify()
1084 KUNIT_EXPECT_KASAN_FAIL(test, clear_bit_unlock(nr, addr)); in kasan_bitops_modify()
1085 KUNIT_EXPECT_KASAN_FAIL(test, __clear_bit_unlock(nr, addr)); in kasan_bitops_modify()
1086 KUNIT_EXPECT_KASAN_FAIL(test, change_bit(nr, addr)); in kasan_bitops_modify()
1087 KUNIT_EXPECT_KASAN_FAIL(test, __change_bit(nr, addr)); in kasan_bitops_modify()
1090 static void kasan_bitops_test_and_modify(struct kunit *test, int nr, void *addr) in kasan_bitops_test_and_modify() argument
1092 KUNIT_EXPECT_KASAN_FAIL(test, test_and_set_bit(nr, addr)); in kasan_bitops_test_and_modify()
1093 KUNIT_EXPECT_KASAN_FAIL(test, __test_and_set_bit(nr, addr)); in kasan_bitops_test_and_modify()
1094 KUNIT_EXPECT_KASAN_FAIL(test, test_and_set_bit_lock(nr, addr)); in kasan_bitops_test_and_modify()
1095 KUNIT_EXPECT_KASAN_FAIL(test, test_and_clear_bit(nr, addr)); in kasan_bitops_test_and_modify()
1096 KUNIT_EXPECT_KASAN_FAIL(test, __test_and_clear_bit(nr, addr)); in kasan_bitops_test_and_modify()
1097 KUNIT_EXPECT_KASAN_FAIL(test, test_and_change_bit(nr, addr)); in kasan_bitops_test_and_modify()
1098 KUNIT_EXPECT_KASAN_FAIL(test, __test_and_change_bit(nr, addr)); in kasan_bitops_test_and_modify()
1099 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = test_bit(nr, addr)); in kasan_bitops_test_and_modify()
1102 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = in kasan_bitops_test_and_modify()
1107 static void kasan_bitops_generic(struct kunit *test) in kasan_bitops_generic() argument
1111 /* This test is specifically crafted for the generic mode. */ in kasan_bitops_generic()
1112 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC); in kasan_bitops_generic()
1119 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, bits); in kasan_bitops_generic()
1126 kasan_bitops_modify(test, BITS_PER_LONG, bits); in kasan_bitops_generic()
1131 kasan_bitops_test_and_modify(test, BITS_PER_LONG + BITS_PER_BYTE, bits); in kasan_bitops_generic()
1136 static void kasan_bitops_tags(struct kunit *test) in kasan_bitops_tags() argument
1140 /* This test is specifically crafted for tag-based modes. */ in kasan_bitops_tags()
1141 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC); in kasan_bitops_tags()
1145 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, bits); in kasan_bitops_tags()
1148 kasan_bitops_modify(test, BITS_PER_LONG, (void *)bits + 48); in kasan_bitops_tags()
1149 kasan_bitops_test_and_modify(test, BITS_PER_LONG + BITS_PER_BYTE, (void *)bits + 48); in kasan_bitops_tags()
1154 static void kmalloc_double_kzfree(struct kunit *test) in kmalloc_double_kzfree() argument
1160 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_double_kzfree()
1163 KUNIT_EXPECT_KASAN_FAIL(test, kfree_sensitive(ptr)); in kmalloc_double_kzfree()
1188 static void rcu_uaf(struct kunit *test) in rcu_uaf() argument
1193 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in rcu_uaf()
1198 KUNIT_EXPECT_KASAN_FAIL(test, in rcu_uaf()
1208 static void workqueue_uaf(struct kunit *test) in workqueue_uaf() argument
1214 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, workqueue); in workqueue_uaf()
1217 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, work); in workqueue_uaf()
1223 KUNIT_EXPECT_KASAN_FAIL(test, in workqueue_uaf()
1227 static void vmalloc_helpers_tags(struct kunit *test) in vmalloc_helpers_tags() argument
1231 /* This test is intended for tag-based modes. */ in vmalloc_helpers_tags()
1232 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC); in vmalloc_helpers_tags()
1234 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_VMALLOC); in vmalloc_helpers_tags()
1237 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in vmalloc_helpers_tags()
1240 KUNIT_EXPECT_GE(test, (u8)get_tag(ptr), (u8)KASAN_TAG_MIN); in vmalloc_helpers_tags()
1241 KUNIT_EXPECT_LT(test, (u8)get_tag(ptr), (u8)KASAN_TAG_KERNEL); in vmalloc_helpers_tags()
1244 KUNIT_ASSERT_TRUE(test, is_vmalloc_addr(ptr)); in vmalloc_helpers_tags()
1245 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, vmalloc_to_page(ptr)); in vmalloc_helpers_tags()
1253 KUNIT_ASSERT_GE(test, rv, 0); in vmalloc_helpers_tags()
1255 KUNIT_ASSERT_GE(test, rv, 0); in vmalloc_helpers_tags()
1262 static void vmalloc_oob(struct kunit *test) in vmalloc_oob() argument
1268 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_VMALLOC); in vmalloc_oob()
1271 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, v_ptr); in vmalloc_oob()
1289 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)v_ptr)[size]); in vmalloc_oob()
1292 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)v_ptr)[size + 5]); in vmalloc_oob()
1296 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, page); in vmalloc_oob()
1298 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, p_ptr); in vmalloc_oob()
1310 static void vmap_tags(struct kunit *test) in vmap_tags() argument
1316 * This test is specifically crafted for the software tag-based mode, in vmap_tags()
1319 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_SW_TAGS); in vmap_tags()
1321 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_VMALLOC); in vmap_tags()
1324 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, p_page); in vmap_tags()
1326 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, p_ptr); in vmap_tags()
1329 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, v_ptr); in vmap_tags()
1337 KUNIT_EXPECT_GE(test, (u8)get_tag(v_ptr), (u8)KASAN_TAG_MIN); in vmap_tags()
1338 KUNIT_EXPECT_LT(test, (u8)get_tag(v_ptr), (u8)KASAN_TAG_KERNEL); in vmap_tags()
1346 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, v_page); in vmap_tags()
1347 KUNIT_EXPECT_PTR_EQ(test, p_page, v_page); in vmap_tags()
1353 static void vm_map_ram_tags(struct kunit *test) in vm_map_ram_tags() argument
1359 * This test is specifically crafted for the software tag-based mode, in vm_map_ram_tags()
1362 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_SW_TAGS); in vm_map_ram_tags()
1365 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, page); in vm_map_ram_tags()
1367 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, p_ptr); in vm_map_ram_tags()
1370 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, v_ptr); in vm_map_ram_tags()
1372 KUNIT_EXPECT_GE(test, (u8)get_tag(v_ptr), (u8)KASAN_TAG_MIN); in vm_map_ram_tags()
1373 KUNIT_EXPECT_LT(test, (u8)get_tag(v_ptr), (u8)KASAN_TAG_KERNEL); in vm_map_ram_tags()
1383 static void vmalloc_percpu(struct kunit *test) in vmalloc_percpu() argument
1389 * This test is specifically crafted for the software tag-based mode, in vmalloc_percpu()
1392 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_SW_TAGS); in vmalloc_percpu()
1399 KUNIT_EXPECT_GE(test, (u8)get_tag(c_ptr), (u8)KASAN_TAG_MIN); in vmalloc_percpu()
1400 KUNIT_EXPECT_LT(test, (u8)get_tag(c_ptr), (u8)KASAN_TAG_KERNEL); in vmalloc_percpu()
1414 static void match_all_not_assigned(struct kunit *test) in match_all_not_assigned() argument
1420 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC); in match_all_not_assigned()
1425 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in match_all_not_assigned()
1426 KUNIT_EXPECT_GE(test, (u8)get_tag(ptr), (u8)KASAN_TAG_MIN); in match_all_not_assigned()
1427 KUNIT_EXPECT_LT(test, (u8)get_tag(ptr), (u8)KASAN_TAG_KERNEL); in match_all_not_assigned()
1435 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in match_all_not_assigned()
1436 KUNIT_EXPECT_GE(test, (u8)get_tag(ptr), (u8)KASAN_TAG_MIN); in match_all_not_assigned()
1437 KUNIT_EXPECT_LT(test, (u8)get_tag(ptr), (u8)KASAN_TAG_KERNEL); in match_all_not_assigned()
1447 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in match_all_not_assigned()
1448 KUNIT_EXPECT_GE(test, (u8)get_tag(ptr), (u8)KASAN_TAG_MIN); in match_all_not_assigned()
1449 KUNIT_EXPECT_LT(test, (u8)get_tag(ptr), (u8)KASAN_TAG_KERNEL); in match_all_not_assigned()
1455 static void match_all_ptr_tag(struct kunit *test) in match_all_ptr_tag() argument
1460 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC); in match_all_ptr_tag()
1463 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in match_all_ptr_tag()
1467 KUNIT_EXPECT_NE(test, tag, (u8)KASAN_TAG_KERNEL); in match_all_ptr_tag()
1481 static void match_all_mem_tag(struct kunit *test) in match_all_mem_tag() argument
1486 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC); in match_all_mem_tag()
1489 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in match_all_mem_tag()
1490 KUNIT_EXPECT_NE(test, (u8)get_tag(ptr), (u8)KASAN_TAG_KERNEL); in match_all_mem_tag()
1501 KUNIT_EXPECT_KASAN_FAIL(test, *ptr = 0); in match_all_mem_tag()