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()
455 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1); in kmalloc_oob_16()
458 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2); in kmalloc_oob_16()
462 KUNIT_EXPECT_KASAN_FAIL(test, *ptr1 = *ptr2); in kmalloc_oob_16()
467 static void kmalloc_uaf_16(struct kunit *test) in kmalloc_uaf_16() argument
473 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); in kmalloc_uaf_16()
476 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1); in kmalloc_uaf_16()
479 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2); in kmalloc_uaf_16()
482 KUNIT_EXPECT_KASAN_FAIL(test, *ptr1 = *ptr2); in kmalloc_uaf_16()
492 static void kmalloc_oob_memset_2(struct kunit *test) in kmalloc_oob_memset_2() argument
497 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); in kmalloc_oob_memset_2()
500 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_oob_memset_2()
503 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 1, 0, 2)); in kmalloc_oob_memset_2()
507 static void kmalloc_oob_memset_4(struct kunit *test) in kmalloc_oob_memset_4() argument
512 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); in kmalloc_oob_memset_4()
515 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_oob_memset_4()
518 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 3, 0, 4)); in kmalloc_oob_memset_4()
522 static void kmalloc_oob_memset_8(struct kunit *test) in kmalloc_oob_memset_8() argument
527 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); in kmalloc_oob_memset_8()
530 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_oob_memset_8()
533 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 7, 0, 8)); in kmalloc_oob_memset_8()
537 static void kmalloc_oob_memset_16(struct kunit *test) in kmalloc_oob_memset_16() argument
542 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); in kmalloc_oob_memset_16()
545 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_oob_memset_16()
548 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 15, 0, 16)); in kmalloc_oob_memset_16()
552 static void kmalloc_oob_in_memset(struct kunit *test) in kmalloc_oob_in_memset() argument
557 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); in kmalloc_oob_in_memset()
560 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_oob_in_memset()
564 KUNIT_EXPECT_KASAN_FAIL(test, in kmalloc_oob_in_memset()
569 static void kmalloc_memmove_negative_size(struct kunit *test) in kmalloc_memmove_negative_size() argument
575 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); in kmalloc_memmove_negative_size()
579 * As a result, this test introduces a side-effect memory corruption, in kmalloc_memmove_negative_size()
582 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_HW_TAGS); in kmalloc_memmove_negative_size()
585 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_memmove_negative_size()
590 KUNIT_EXPECT_KASAN_FAIL(test, in kmalloc_memmove_negative_size()
595 static void kmalloc_memmove_invalid_size(struct kunit *test) in kmalloc_memmove_invalid_size() argument
601 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); in kmalloc_memmove_invalid_size()
604 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_memmove_invalid_size()
609 KUNIT_EXPECT_KASAN_FAIL(test, in kmalloc_memmove_invalid_size()
614 static void kmalloc_uaf(struct kunit *test) in kmalloc_uaf() argument
620 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_uaf()
623 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[8]); in kmalloc_uaf()
626 static void kmalloc_uaf_memset(struct kunit *test) in kmalloc_uaf_memset() argument
631 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test); in kmalloc_uaf_memset()
635 * kernel memory corruption this test causes. in kmalloc_uaf_memset()
637 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC); in kmalloc_uaf_memset()
640 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_uaf_memset()
643 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr, 0, size)); in kmalloc_uaf_memset()
646 static void kmalloc_uaf2(struct kunit *test) in kmalloc_uaf2() argument
654 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1); in kmalloc_uaf2()
659 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2); in kmalloc_uaf2()
670 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr1)[40]); in kmalloc_uaf2()
671 KUNIT_EXPECT_PTR_NE(test, ptr1, ptr2); in kmalloc_uaf2()
680 static void kmalloc_uaf3(struct kunit *test) in kmalloc_uaf3() argument
685 /* This test is specifically crafted for tag-based modes. */ in kmalloc_uaf3()
686 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC); in kmalloc_uaf3()
689 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1); in kmalloc_uaf3()
693 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2); in kmalloc_uaf3()
696 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr1)[8]); in kmalloc_uaf3()
699 static void kfree_via_page(struct kunit *test) in kfree_via_page() argument
707 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kfree_via_page()
714 static void kfree_via_phys(struct kunit *test) in kfree_via_phys() argument
721 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kfree_via_phys()
727 static void kmem_cache_oob(struct kunit *test) in kmem_cache_oob() argument
734 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache); in kmem_cache_oob()
738 kunit_err(test, "Allocation failed: %s\n", __func__); in kmem_cache_oob()
743 KUNIT_EXPECT_KASAN_FAIL(test, *p = p[size + OOB_TAG_OFF]); in kmem_cache_oob()
749 static void kmem_cache_accounted(struct kunit *test) in kmem_cache_accounted() argument
757 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache); in kmem_cache_accounted()
776 static void kmem_cache_bulk(struct kunit *test) in kmem_cache_bulk() argument
785 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache); in kmem_cache_bulk()
789 kunit_err(test, "Allocation failed: %s\n", __func__); in kmem_cache_bulk()
803 static void kasan_global_oob_right(struct kunit *test) in kasan_global_oob_right() argument
821 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC); in kasan_global_oob_right()
823 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p); in kasan_global_oob_right()
826 static void kasan_global_oob_left(struct kunit *test) in kasan_global_oob_left() argument
832 * GCC is known to fail this test, skip it. in kasan_global_oob_left()
835 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_CC_IS_CLANG); in kasan_global_oob_left()
836 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC); in kasan_global_oob_left()
837 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p); in kasan_global_oob_left()
841 static void ksize_unpoisons_memory(struct kunit *test) in ksize_unpoisons_memory() argument
848 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in ksize_unpoisons_memory()
851 KUNIT_EXPECT_GT(test, real_size, size); in ksize_unpoisons_memory()
861 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[size]); in ksize_unpoisons_memory()
862 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[size + 5]); in ksize_unpoisons_memory()
863 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[real_size - 1]); in ksize_unpoisons_memory()
872 static void ksize_uaf(struct kunit *test) in ksize_uaf() argument
878 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in ksize_uaf()
882 KUNIT_EXPECT_KASAN_FAIL(test, ksize(ptr)); in ksize_uaf()
883 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[0]); in ksize_uaf()
884 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[size]); in ksize_uaf()
887 static void kasan_stack_oob(struct kunit *test) in kasan_stack_oob() argument
894 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_STACK); in kasan_stack_oob()
896 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p); in kasan_stack_oob()
899 static void kasan_alloca_oob_left(struct kunit *test) in kasan_alloca_oob_left() argument
908 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC); in kasan_alloca_oob_left()
909 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_STACK); in kasan_alloca_oob_left()
911 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p); in kasan_alloca_oob_left()
914 static void kasan_alloca_oob_right(struct kunit *test) in kasan_alloca_oob_right() argument
923 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC); in kasan_alloca_oob_right()
924 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_STACK); in kasan_alloca_oob_right()
926 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p); in kasan_alloca_oob_right()
929 static void kmem_cache_double_free(struct kunit *test) in kmem_cache_double_free() argument
936 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache); in kmem_cache_double_free()
940 kunit_err(test, "Allocation failed: %s\n", __func__); in kmem_cache_double_free()
946 KUNIT_EXPECT_KASAN_FAIL(test, kmem_cache_free(cache, p)); in kmem_cache_double_free()
950 static void kmem_cache_invalid_free(struct kunit *test) in kmem_cache_invalid_free() argument
958 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache); in kmem_cache_invalid_free()
962 kunit_err(test, "Allocation failed: %s\n", __func__); in kmem_cache_invalid_free()
968 KUNIT_EXPECT_KASAN_FAIL(test, kmem_cache_free(cache, p + 1)); in kmem_cache_invalid_free()
981 static void kmem_cache_double_destroy(struct kunit *test) in kmem_cache_double_destroy() argument
987 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache); in kmem_cache_double_destroy()
989 KUNIT_EXPECT_KASAN_FAIL(test, kmem_cache_destroy(cache)); in kmem_cache_double_destroy()
992 static void kasan_memchr(struct kunit *test) in kasan_memchr() argument
1001 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_AMD_MEM_ENCRYPT); in kasan_memchr()
1007 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kasan_memchr()
1011 KUNIT_EXPECT_KASAN_FAIL(test, in kasan_memchr()
1017 static void kasan_memcmp(struct kunit *test) in kasan_memcmp() argument
1027 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_AMD_MEM_ENCRYPT); in kasan_memcmp()
1033 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kasan_memcmp()
1038 KUNIT_EXPECT_KASAN_FAIL(test, in kasan_memcmp()
1043 static void kasan_strings(struct kunit *test) in kasan_strings() argument
1052 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_AMD_MEM_ENCRYPT); in kasan_strings()
1055 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kasan_strings()
1066 KUNIT_EXPECT_KASAN_FAIL(test, kasan_ptr_result = strchr(ptr, '1')); in kasan_strings()
1068 KUNIT_EXPECT_KASAN_FAIL(test, kasan_ptr_result = strrchr(ptr, '1')); in kasan_strings()
1070 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strcmp(ptr, "2")); in kasan_strings()
1072 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strncmp(ptr, "2", 1)); in kasan_strings()
1074 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strlen(ptr)); in kasan_strings()
1076 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strnlen(ptr, 1)); in kasan_strings()
1079 static void kasan_bitops_modify(struct kunit *test, int nr, void *addr) in kasan_bitops_modify() argument
1081 KUNIT_EXPECT_KASAN_FAIL(test, set_bit(nr, addr)); in kasan_bitops_modify()
1082 KUNIT_EXPECT_KASAN_FAIL(test, __set_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(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, __clear_bit_unlock(nr, addr)); in kasan_bitops_modify()
1087 KUNIT_EXPECT_KASAN_FAIL(test, change_bit(nr, addr)); in kasan_bitops_modify()
1088 KUNIT_EXPECT_KASAN_FAIL(test, __change_bit(nr, addr)); in kasan_bitops_modify()
1091 static void kasan_bitops_test_and_modify(struct kunit *test, int nr, void *addr) in kasan_bitops_test_and_modify() argument
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(nr, addr)); in kasan_bitops_test_and_modify()
1095 KUNIT_EXPECT_KASAN_FAIL(test, test_and_set_bit_lock(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_clear_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, __test_and_change_bit(nr, addr)); in kasan_bitops_test_and_modify()
1100 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = test_bit(nr, addr)); in kasan_bitops_test_and_modify()
1103 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = in kasan_bitops_test_and_modify()
1108 static void kasan_bitops_generic(struct kunit *test) in kasan_bitops_generic() argument
1112 /* This test is specifically crafted for the generic mode. */ in kasan_bitops_generic()
1113 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC); in kasan_bitops_generic()
1120 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, bits); in kasan_bitops_generic()
1127 kasan_bitops_modify(test, BITS_PER_LONG, bits); in kasan_bitops_generic()
1132 kasan_bitops_test_and_modify(test, BITS_PER_LONG + BITS_PER_BYTE, bits); in kasan_bitops_generic()
1137 static void kasan_bitops_tags(struct kunit *test) in kasan_bitops_tags() argument
1141 /* This test is specifically crafted for tag-based modes. */ in kasan_bitops_tags()
1142 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC); in kasan_bitops_tags()
1146 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, bits); in kasan_bitops_tags()
1149 kasan_bitops_modify(test, BITS_PER_LONG, (void *)bits + 48); in kasan_bitops_tags()
1150 kasan_bitops_test_and_modify(test, BITS_PER_LONG + BITS_PER_BYTE, (void *)bits + 48); in kasan_bitops_tags()
1155 static void kmalloc_double_kzfree(struct kunit *test) in kmalloc_double_kzfree() argument
1161 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in kmalloc_double_kzfree()
1164 KUNIT_EXPECT_KASAN_FAIL(test, kfree_sensitive(ptr)); in kmalloc_double_kzfree()
1189 static void rcu_uaf(struct kunit *test) in rcu_uaf() argument
1194 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in rcu_uaf()
1199 KUNIT_EXPECT_KASAN_FAIL(test, in rcu_uaf()
1209 static void workqueue_uaf(struct kunit *test) in workqueue_uaf() argument
1215 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, workqueue); in workqueue_uaf()
1218 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, work); in workqueue_uaf()
1224 KUNIT_EXPECT_KASAN_FAIL(test, in workqueue_uaf()
1228 static void vmalloc_helpers_tags(struct kunit *test) in vmalloc_helpers_tags() argument
1232 /* This test is intended for tag-based modes. */ in vmalloc_helpers_tags()
1233 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC); in vmalloc_helpers_tags()
1235 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_VMALLOC); in vmalloc_helpers_tags()
1238 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in vmalloc_helpers_tags()
1241 KUNIT_EXPECT_GE(test, (u8)get_tag(ptr), (u8)KASAN_TAG_MIN); in vmalloc_helpers_tags()
1242 KUNIT_EXPECT_LT(test, (u8)get_tag(ptr), (u8)KASAN_TAG_KERNEL); in vmalloc_helpers_tags()
1245 KUNIT_ASSERT_TRUE(test, is_vmalloc_addr(ptr)); in vmalloc_helpers_tags()
1246 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, vmalloc_to_page(ptr)); in vmalloc_helpers_tags()
1254 KUNIT_ASSERT_GE(test, rv, 0); in vmalloc_helpers_tags()
1256 KUNIT_ASSERT_GE(test, rv, 0); in vmalloc_helpers_tags()
1263 static void vmalloc_oob(struct kunit *test) in vmalloc_oob() argument
1269 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_VMALLOC); in vmalloc_oob()
1272 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, v_ptr); in vmalloc_oob()
1290 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)v_ptr)[size]); in vmalloc_oob()
1293 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)v_ptr)[size + 5]); in vmalloc_oob()
1297 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, page); in vmalloc_oob()
1299 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, p_ptr); in vmalloc_oob()
1311 static void vmap_tags(struct kunit *test) in vmap_tags() argument
1317 * This test is specifically crafted for the software tag-based mode, in vmap_tags()
1320 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_SW_TAGS); in vmap_tags()
1322 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_VMALLOC); in vmap_tags()
1325 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, p_page); in vmap_tags()
1327 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, p_ptr); in vmap_tags()
1330 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, v_ptr); in vmap_tags()
1338 KUNIT_EXPECT_GE(test, (u8)get_tag(v_ptr), (u8)KASAN_TAG_MIN); in vmap_tags()
1339 KUNIT_EXPECT_LT(test, (u8)get_tag(v_ptr), (u8)KASAN_TAG_KERNEL); in vmap_tags()
1347 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, v_page); in vmap_tags()
1348 KUNIT_EXPECT_PTR_EQ(test, p_page, v_page); in vmap_tags()
1354 static void vm_map_ram_tags(struct kunit *test) in vm_map_ram_tags() argument
1360 * This test is specifically crafted for the software tag-based mode, in vm_map_ram_tags()
1363 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_SW_TAGS); in vm_map_ram_tags()
1366 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, page); in vm_map_ram_tags()
1368 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, p_ptr); in vm_map_ram_tags()
1371 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, v_ptr); in vm_map_ram_tags()
1373 KUNIT_EXPECT_GE(test, (u8)get_tag(v_ptr), (u8)KASAN_TAG_MIN); in vm_map_ram_tags()
1374 KUNIT_EXPECT_LT(test, (u8)get_tag(v_ptr), (u8)KASAN_TAG_KERNEL); in vm_map_ram_tags()
1389 static void match_all_not_assigned(struct kunit *test) in match_all_not_assigned() argument
1395 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC); in match_all_not_assigned()
1400 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in match_all_not_assigned()
1401 KUNIT_EXPECT_GE(test, (u8)get_tag(ptr), (u8)KASAN_TAG_MIN); in match_all_not_assigned()
1402 KUNIT_EXPECT_LT(test, (u8)get_tag(ptr), (u8)KASAN_TAG_KERNEL); in match_all_not_assigned()
1410 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in match_all_not_assigned()
1411 KUNIT_EXPECT_GE(test, (u8)get_tag(ptr), (u8)KASAN_TAG_MIN); in match_all_not_assigned()
1412 KUNIT_EXPECT_LT(test, (u8)get_tag(ptr), (u8)KASAN_TAG_KERNEL); in match_all_not_assigned()
1422 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in match_all_not_assigned()
1423 KUNIT_EXPECT_GE(test, (u8)get_tag(ptr), (u8)KASAN_TAG_MIN); in match_all_not_assigned()
1424 KUNIT_EXPECT_LT(test, (u8)get_tag(ptr), (u8)KASAN_TAG_KERNEL); in match_all_not_assigned()
1430 static void match_all_ptr_tag(struct kunit *test) in match_all_ptr_tag() argument
1435 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC); in match_all_ptr_tag()
1438 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in match_all_ptr_tag()
1442 KUNIT_EXPECT_NE(test, tag, (u8)KASAN_TAG_KERNEL); in match_all_ptr_tag()
1456 static void match_all_mem_tag(struct kunit *test) in match_all_mem_tag() argument
1461 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC); in match_all_mem_tag()
1464 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); in match_all_mem_tag()
1465 KUNIT_EXPECT_NE(test, (u8)get_tag(ptr), (u8)KASAN_TAG_KERNEL); in match_all_mem_tag()
1476 KUNIT_EXPECT_KASAN_FAIL(test, *ptr = 0); in match_all_mem_tag()