Lines Matching refs:test

10 #include <kunit/test.h>
88 static void kasan_test_exit(struct kunit *test)
90 KUNIT_EXPECT_FALSE(test, READ_ONCE(test_status.report_found));
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 { \
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 { \
142 kunit_skip((test), "Test requires " #config "=y"); \
145 #define KASAN_TEST_NEEDS_CONFIG_OFF(test, config) do { \
147 kunit_skip((test), "Test requires " #config "=n"); \
150 #define KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test) do { \
156 kunit_skip((test), "Test requires checked mem*()"); \
159 static void kmalloc_oob_right(struct kunit *test)
165 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
173 KUNIT_EXPECT_KASAN_FAIL(test, ptr[size] = 'x');
179 KUNIT_EXPECT_KASAN_FAIL(test, ptr[size + 5] = 'y');
182 KUNIT_EXPECT_KASAN_FAIL(test, ptr[0] =
188 static void kmalloc_oob_left(struct kunit *test)
194 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
197 KUNIT_EXPECT_KASAN_FAIL(test, *ptr = *(ptr - 1));
201 static void kmalloc_node_oob_right(struct kunit *test)
207 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
210 KUNIT_EXPECT_KASAN_FAIL(test, ptr[0] = ptr[size]);
220 static void kmalloc_pagealloc_oob_right(struct kunit *test)
225 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_SLUB);
228 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
231 KUNIT_EXPECT_KASAN_FAIL(test, ptr[size + OOB_TAG_OFF] = 0);
236 static void kmalloc_pagealloc_uaf(struct kunit *test)
241 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_SLUB);
244 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
247 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[0]);
250 static void kmalloc_pagealloc_invalid_free(struct kunit *test)
255 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_SLUB);
258 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
260 KUNIT_EXPECT_KASAN_FAIL(test, kfree(ptr + 1));
263 static void pagealloc_oob_right(struct kunit *test)
275 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC);
279 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
281 KUNIT_EXPECT_KASAN_FAIL(test, ptr[0] = ptr[size]);
285 static void pagealloc_uaf(struct kunit *test)
293 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
296 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[0]);
299 static void kmalloc_large_oob_right(struct kunit *test)
309 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
312 KUNIT_EXPECT_KASAN_FAIL(test, ptr[size] = 0);
316 static void krealloc_more_oob_helper(struct kunit *test,
322 KUNIT_ASSERT_LT(test, size1, size2);
326 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1);
329 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2);
342 KUNIT_EXPECT_KASAN_FAIL(test, ptr2[size2] = 'x');
345 KUNIT_EXPECT_KASAN_FAIL(test,
351 static void krealloc_less_oob_helper(struct kunit *test,
357 KUNIT_ASSERT_LT(test, size2, size1);
361 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1);
364 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2);
374 KUNIT_EXPECT_KASAN_FAIL(test, ptr2[size2] = 'x');
377 KUNIT_EXPECT_KASAN_FAIL(test,
384 KUNIT_EXPECT_LE(test, round_up(size2, KASAN_GRANULE_SIZE),
386 KUNIT_EXPECT_LE(test, round_up(middle, KASAN_GRANULE_SIZE),
388 KUNIT_EXPECT_KASAN_FAIL(test, ptr2[middle] = 'x');
389 KUNIT_EXPECT_KASAN_FAIL(test, ptr2[size1 - 1] = 'x');
390 KUNIT_EXPECT_KASAN_FAIL(test, ptr2[size1] = 'x');
395 static void krealloc_more_oob(struct kunit *test)
397 krealloc_more_oob_helper(test, 201, 235);
400 static void krealloc_less_oob(struct kunit *test)
402 krealloc_less_oob_helper(test, 235, 201);
405 static void krealloc_pagealloc_more_oob(struct kunit *test)
408 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_SLUB);
410 krealloc_more_oob_helper(test, KMALLOC_MAX_CACHE_SIZE + 201,
414 static void krealloc_pagealloc_less_oob(struct kunit *test)
417 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_SLUB);
419 krealloc_less_oob_helper(test, KMALLOC_MAX_CACHE_SIZE + 235,
427 static void krealloc_uaf(struct kunit *test)
434 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1);
437 KUNIT_EXPECT_KASAN_FAIL(test, ptr2 = krealloc(ptr1, size2, GFP_KERNEL));
438 KUNIT_ASSERT_NULL(test, ptr2);
439 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)ptr1);
442 static void kmalloc_oob_16(struct kunit *test)
448 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test);
450 /* This test is specifically crafted for the generic mode. */
451 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC);
455 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1);
458 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2);
462 KUNIT_EXPECT_KASAN_FAIL(test, *ptr1 = *ptr2);
467 static void kmalloc_uaf_16(struct kunit *test)
473 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test);
476 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1);
479 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2);
482 KUNIT_EXPECT_KASAN_FAIL(test, *ptr1 = *ptr2);
492 static void kmalloc_oob_memset_2(struct kunit *test)
497 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test);
500 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
503 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 1, 0, 2));
507 static void kmalloc_oob_memset_4(struct kunit *test)
512 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test);
515 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
518 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 3, 0, 4));
522 static void kmalloc_oob_memset_8(struct kunit *test)
527 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test);
530 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
533 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 7, 0, 8));
537 static void kmalloc_oob_memset_16(struct kunit *test)
542 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test);
545 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
548 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + size - 15, 0, 16));
552 static void kmalloc_oob_in_memset(struct kunit *test)
557 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test);
560 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
564 KUNIT_EXPECT_KASAN_FAIL(test,
569 static void kmalloc_memmove_negative_size(struct kunit *test)
575 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test);
579 * As a result, this test introduces a side-effect memory corruption,
582 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_HW_TAGS);
585 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
590 KUNIT_EXPECT_KASAN_FAIL(test,
595 static void kmalloc_memmove_invalid_size(struct kunit *test)
601 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test);
604 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
609 KUNIT_EXPECT_KASAN_FAIL(test,
614 static void kmalloc_uaf(struct kunit *test)
620 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
623 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[8]);
626 static void kmalloc_uaf_memset(struct kunit *test)
631 KASAN_TEST_NEEDS_CHECKED_MEMINTRINSICS(test);
635 * kernel memory corruption this test causes.
637 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC);
640 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
643 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr, 0, size));
646 static void kmalloc_uaf2(struct kunit *test)
654 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1);
659 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2);
670 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr1)[40]);
671 KUNIT_EXPECT_PTR_NE(test, ptr1, ptr2);
680 static void kmalloc_uaf3(struct kunit *test)
685 /* This test is specifically crafted for tag-based modes. */
686 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC);
689 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1);
693 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2);
696 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr1)[8]);
699 static void kfree_via_page(struct kunit *test)
707 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
714 static void kfree_via_phys(struct kunit *test)
721 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
727 static void kmem_cache_oob(struct kunit *test)
734 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache);
738 kunit_err(test, "Allocation failed: %s\n", __func__);
743 KUNIT_EXPECT_KASAN_FAIL(test, *p = p[size + OOB_TAG_OFF]);
749 static void kmem_cache_accounted(struct kunit *test)
757 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache);
776 static void kmem_cache_bulk(struct kunit *test)
785 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache);
789 kunit_err(test, "Allocation failed: %s\n", __func__);
803 static void kasan_global_oob_right(struct kunit *test)
821 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC);
823 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p);
826 static void kasan_global_oob_left(struct kunit *test)
832 * GCC is known to fail this test, skip it.
835 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_CC_IS_CLANG);
836 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC);
837 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p);
841 static void ksize_unpoisons_memory(struct kunit *test)
848 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
851 KUNIT_EXPECT_GT(test, real_size, size);
861 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[size]);
862 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[size + 5]);
863 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[real_size - 1]);
872 static void ksize_uaf(struct kunit *test)
878 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
882 KUNIT_EXPECT_KASAN_FAIL(test, ksize(ptr));
883 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[0]);
884 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[size]);
887 static void kasan_stack_oob(struct kunit *test)
894 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_STACK);
896 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p);
899 static void kasan_alloca_oob_left(struct kunit *test)
908 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC);
909 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_STACK);
911 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p);
914 static void kasan_alloca_oob_right(struct kunit *test)
923 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC);
924 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_STACK);
926 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p);
929 static void kmem_cache_double_free(struct kunit *test)
936 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache);
940 kunit_err(test, "Allocation failed: %s\n", __func__);
946 KUNIT_EXPECT_KASAN_FAIL(test, kmem_cache_free(cache, p));
950 static void kmem_cache_invalid_free(struct kunit *test)
958 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache);
962 kunit_err(test, "Allocation failed: %s\n", __func__);
968 KUNIT_EXPECT_KASAN_FAIL(test, kmem_cache_free(cache, p + 1));
981 static void kmem_cache_double_destroy(struct kunit *test)
987 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache);
989 KUNIT_EXPECT_KASAN_FAIL(test, kmem_cache_destroy(cache));
992 static void kasan_memchr(struct kunit *test)
1001 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_AMD_MEM_ENCRYPT);
1007 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
1011 KUNIT_EXPECT_KASAN_FAIL(test,
1017 static void kasan_memcmp(struct kunit *test)
1027 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_AMD_MEM_ENCRYPT);
1033 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
1038 KUNIT_EXPECT_KASAN_FAIL(test,
1043 static void kasan_strings(struct kunit *test)
1052 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_AMD_MEM_ENCRYPT);
1055 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
1066 KUNIT_EXPECT_KASAN_FAIL(test, kasan_ptr_result = strchr(ptr, '1'));
1068 KUNIT_EXPECT_KASAN_FAIL(test, kasan_ptr_result = strrchr(ptr, '1'));
1070 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strcmp(ptr, "2"));
1072 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strncmp(ptr, "2", 1));
1074 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strlen(ptr));
1076 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strnlen(ptr, 1));
1079 static void kasan_bitops_modify(struct kunit *test, int nr, void *addr)
1081 KUNIT_EXPECT_KASAN_FAIL(test, set_bit(nr, addr));
1082 KUNIT_EXPECT_KASAN_FAIL(test, __set_bit(nr, addr));
1083 KUNIT_EXPECT_KASAN_FAIL(test, clear_bit(nr, addr));
1084 KUNIT_EXPECT_KASAN_FAIL(test, __clear_bit(nr, addr));
1085 KUNIT_EXPECT_KASAN_FAIL(test, clear_bit_unlock(nr, addr));
1086 KUNIT_EXPECT_KASAN_FAIL(test, __clear_bit_unlock(nr, addr));
1087 KUNIT_EXPECT_KASAN_FAIL(test, change_bit(nr, addr));
1088 KUNIT_EXPECT_KASAN_FAIL(test, __change_bit(nr, addr));
1091 static void kasan_bitops_test_and_modify(struct kunit *test, int nr, void *addr)
1093 KUNIT_EXPECT_KASAN_FAIL(test, test_and_set_bit(nr, addr));
1094 KUNIT_EXPECT_KASAN_FAIL(test, __test_and_set_bit(nr, addr));
1095 KUNIT_EXPECT_KASAN_FAIL(test, test_and_set_bit_lock(nr, addr));
1096 KUNIT_EXPECT_KASAN_FAIL(test, test_and_clear_bit(nr, addr));
1097 KUNIT_EXPECT_KASAN_FAIL(test, __test_and_clear_bit(nr, addr));
1098 KUNIT_EXPECT_KASAN_FAIL(test, test_and_change_bit(nr, addr));
1099 KUNIT_EXPECT_KASAN_FAIL(test, __test_and_change_bit(nr, addr));
1100 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = test_bit(nr, addr));
1103 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result =
1108 static void kasan_bitops_generic(struct kunit *test)
1112 /* This test is specifically crafted for the generic mode. */
1113 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC);
1120 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, bits);
1127 kasan_bitops_modify(test, BITS_PER_LONG, bits);
1132 kasan_bitops_test_and_modify(test, BITS_PER_LONG + BITS_PER_BYTE, bits);
1137 static void kasan_bitops_tags(struct kunit *test)
1141 /* This test is specifically crafted for tag-based modes. */
1142 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC);
1146 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, bits);
1149 kasan_bitops_modify(test, BITS_PER_LONG, (void *)bits + 48);
1150 kasan_bitops_test_and_modify(test, BITS_PER_LONG + BITS_PER_BYTE, (void *)bits + 48);
1155 static void kmalloc_double_kzfree(struct kunit *test)
1161 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
1164 KUNIT_EXPECT_KASAN_FAIL(test, kfree_sensitive(ptr));
1189 static void rcu_uaf(struct kunit *test)
1194 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
1199 KUNIT_EXPECT_KASAN_FAIL(test,
1209 static void workqueue_uaf(struct kunit *test)
1215 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, workqueue);
1218 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, work);
1224 KUNIT_EXPECT_KASAN_FAIL(test,
1228 static void vmalloc_helpers_tags(struct kunit *test)
1232 /* This test is intended for tag-based modes. */
1233 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC);
1235 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_VMALLOC);
1238 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
1241 KUNIT_EXPECT_GE(test, (u8)get_tag(ptr), (u8)KASAN_TAG_MIN);
1242 KUNIT_EXPECT_LT(test, (u8)get_tag(ptr), (u8)KASAN_TAG_KERNEL);
1245 KUNIT_ASSERT_TRUE(test, is_vmalloc_addr(ptr));
1246 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, vmalloc_to_page(ptr));
1254 KUNIT_ASSERT_GE(test, rv, 0);
1256 KUNIT_ASSERT_GE(test, rv, 0);
1263 static void vmalloc_oob(struct kunit *test)
1269 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_VMALLOC);
1272 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, v_ptr);
1290 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)v_ptr)[size]);
1293 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)v_ptr)[size + 5]);
1297 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, page);
1299 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, p_ptr);
1311 static void vmap_tags(struct kunit *test)
1317 * This test is specifically crafted for the software tag-based mode,
1320 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_SW_TAGS);
1322 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_VMALLOC);
1325 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, p_page);
1327 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, p_ptr);
1330 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, v_ptr);
1338 KUNIT_EXPECT_GE(test, (u8)get_tag(v_ptr), (u8)KASAN_TAG_MIN);
1339 KUNIT_EXPECT_LT(test, (u8)get_tag(v_ptr), (u8)KASAN_TAG_KERNEL);
1347 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, v_page);
1348 KUNIT_EXPECT_PTR_EQ(test, p_page, v_page);
1354 static void vm_map_ram_tags(struct kunit *test)
1360 * This test is specifically crafted for the software tag-based mode,
1363 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_SW_TAGS);
1366 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, page);
1368 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, p_ptr);
1371 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, v_ptr);
1373 KUNIT_EXPECT_GE(test, (u8)get_tag(v_ptr), (u8)KASAN_TAG_MIN);
1374 KUNIT_EXPECT_LT(test, (u8)get_tag(v_ptr), (u8)KASAN_TAG_KERNEL);
1384 static void vmalloc_percpu(struct kunit *test)
1390 * This test is specifically crafted for the software tag-based mode,
1393 KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_SW_TAGS);
1400 KUNIT_EXPECT_GE(test, (u8)get_tag(c_ptr), (u8)KASAN_TAG_MIN);
1401 KUNIT_EXPECT_LT(test, (u8)get_tag(c_ptr), (u8)KASAN_TAG_KERNEL);
1415 static void match_all_not_assigned(struct kunit *test)
1421 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC);
1426 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
1427 KUNIT_EXPECT_GE(test, (u8)get_tag(ptr), (u8)KASAN_TAG_MIN);
1428 KUNIT_EXPECT_LT(test, (u8)get_tag(ptr), (u8)KASAN_TAG_KERNEL);
1436 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
1437 KUNIT_EXPECT_GE(test, (u8)get_tag(ptr), (u8)KASAN_TAG_MIN);
1438 KUNIT_EXPECT_LT(test, (u8)get_tag(ptr), (u8)KASAN_TAG_KERNEL);
1448 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
1449 KUNIT_EXPECT_GE(test, (u8)get_tag(ptr), (u8)KASAN_TAG_MIN);
1450 KUNIT_EXPECT_LT(test, (u8)get_tag(ptr), (u8)KASAN_TAG_KERNEL);
1456 static void match_all_ptr_tag(struct kunit *test)
1461 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC);
1464 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
1468 KUNIT_EXPECT_NE(test, tag, (u8)KASAN_TAG_KERNEL);
1482 static void match_all_mem_tag(struct kunit *test)
1487 KASAN_TEST_NEEDS_CONFIG_OFF(test, CONFIG_KASAN_GENERIC);
1490 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
1491 KUNIT_EXPECT_NE(test, (u8)get_tag(ptr), (u8)KASAN_TAG_KERNEL);
1502 KUNIT_EXPECT_KASAN_FAIL(test, *ptr = 0);