Lines Matching refs: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)
53 static void kasan_test_exit(struct kunit *test)
59 * KUNIT_EXPECT_KASAN_FAIL() - Causes a test failure when the expression does
64 #define KUNIT_EXPECT_KASAN_FAIL(test, condition) do { \
67 kunit_add_named_resource(test, \
73 KUNIT_EXPECT_EQ(test, \
78 static void kmalloc_oob_right(struct kunit *test)
84 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
86 KUNIT_EXPECT_KASAN_FAIL(test, ptr[size + OOB_TAG_OFF] = 'x');
90 static void kmalloc_oob_left(struct kunit *test)
96 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
98 KUNIT_EXPECT_KASAN_FAIL(test, *ptr = *(ptr - 1));
102 static void kmalloc_node_oob_right(struct kunit *test)
108 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
110 KUNIT_EXPECT_KASAN_FAIL(test, ptr[size] = 0);
114 static void kmalloc_pagealloc_oob_right(struct kunit *test)
120 kunit_info(test, "CONFIG_SLUB is not enabled.");
128 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
130 KUNIT_EXPECT_KASAN_FAIL(test, ptr[size + OOB_TAG_OFF] = 0);
134 static void kmalloc_pagealloc_uaf(struct kunit *test)
140 kunit_info(test, "CONFIG_SLUB is not enabled.");
145 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
148 KUNIT_EXPECT_KASAN_FAIL(test, ptr[0] = 0);
151 static void kmalloc_pagealloc_invalid_free(struct kunit *test)
157 kunit_info(test, "CONFIG_SLUB is not enabled.");
162 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
164 KUNIT_EXPECT_KASAN_FAIL(test, kfree(ptr + 1));
167 static void kmalloc_large_oob_right(struct kunit *test)
175 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
177 KUNIT_EXPECT_KASAN_FAIL(test, ptr[size] = 0);
181 static void kmalloc_oob_krealloc_more(struct kunit *test)
188 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1);
191 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2);
193 KUNIT_EXPECT_KASAN_FAIL(test, ptr2[size2 + OOB_TAG_OFF] = 'x');
197 static void kmalloc_oob_krealloc_less(struct kunit *test)
204 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1);
207 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2);
209 KUNIT_EXPECT_KASAN_FAIL(test, ptr2[size2 + OOB_TAG_OFF] = 'x');
213 static void kmalloc_oob_16(struct kunit *test)
219 /* This test is specifically crafted for the generic mode. */
221 kunit_info(test, "CONFIG_KASAN_GENERIC required\n");
226 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1);
229 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2);
231 KUNIT_EXPECT_KASAN_FAIL(test, *ptr1 = *ptr2);
236 static void kmalloc_uaf_16(struct kunit *test)
243 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1);
246 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2);
249 KUNIT_EXPECT_KASAN_FAIL(test, *ptr1 = *ptr2);
253 static void kmalloc_oob_memset_2(struct kunit *test)
259 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
261 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + 7 + OOB_TAG_OFF, 0, 2));
265 static void kmalloc_oob_memset_4(struct kunit *test)
271 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
273 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + 5 + OOB_TAG_OFF, 0, 4));
278 static void kmalloc_oob_memset_8(struct kunit *test)
284 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
286 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + 1 + OOB_TAG_OFF, 0, 8));
290 static void kmalloc_oob_memset_16(struct kunit *test)
296 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
298 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr + 1 + OOB_TAG_OFF, 0, 16));
302 static void kmalloc_oob_in_memset(struct kunit *test)
308 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
310 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr, 0, size + 5 + OOB_TAG_OFF));
314 static void kmalloc_memmove_invalid_size(struct kunit *test)
321 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
325 KUNIT_EXPECT_KASAN_FAIL(test,
330 static void kmalloc_uaf(struct kunit *test)
336 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
339 KUNIT_EXPECT_KASAN_FAIL(test, *(ptr + 8) = 'x');
342 static void kmalloc_uaf_memset(struct kunit *test)
348 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
351 KUNIT_EXPECT_KASAN_FAIL(test, memset(ptr, 0, size));
354 static void kmalloc_uaf2(struct kunit *test)
360 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1);
365 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr2);
367 KUNIT_EXPECT_KASAN_FAIL(test, ptr1[40] = 'x');
368 KUNIT_EXPECT_PTR_NE(test, ptr1, ptr2);
373 static void kfree_via_page(struct kunit *test)
381 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
388 static void kfree_via_phys(struct kunit *test)
395 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
401 static void kmem_cache_oob(struct kunit *test)
408 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache);
411 kunit_err(test, "Allocation failed: %s\n", __func__);
416 KUNIT_EXPECT_KASAN_FAIL(test, *p = p[size + OOB_TAG_OFF]);
421 static void memcg_accounted_kmem_cache(struct kunit *test)
429 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache);
450 static void kasan_global_oob(struct kunit *test)
469 kunit_info(test, "CONFIG_KASAN_GENERIC required");
473 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p);
476 static void ksize_unpoisons_memory(struct kunit *test)
482 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
487 KUNIT_EXPECT_KASAN_FAIL(test, ptr[real_size] = 'y');
491 static void kasan_stack_oob(struct kunit *test)
499 kunit_info(test, "CONFIG_KASAN_STACK is not enabled");
503 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p);
506 static void kasan_alloca_oob_left(struct kunit *test)
516 kunit_info(test, "CONFIG_KASAN_GENERIC required");
521 kunit_info(test, "CONFIG_KASAN_STACK is not enabled");
525 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p);
528 static void kasan_alloca_oob_right(struct kunit *test)
538 kunit_info(test, "CONFIG_KASAN_GENERIC required");
543 kunit_info(test, "CONFIG_KASAN_STACK is not enabled");
547 KUNIT_EXPECT_KASAN_FAIL(test, *(volatile char *)p);
550 static void kmem_cache_double_free(struct kunit *test)
557 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache);
561 kunit_err(test, "Allocation failed: %s\n", __func__);
567 KUNIT_EXPECT_KASAN_FAIL(test, kmem_cache_free(cache, p));
571 static void kmem_cache_invalid_free(struct kunit *test)
579 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, cache);
583 kunit_err(test, "Allocation failed: %s\n", __func__);
589 KUNIT_EXPECT_KASAN_FAIL(test, kmem_cache_free(cache, p + 1));
600 static void kasan_memchr(struct kunit *test)
607 kunit_info(test,
616 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
618 KUNIT_EXPECT_KASAN_FAIL(test,
624 static void kasan_memcmp(struct kunit *test)
632 kunit_info(test,
641 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
644 KUNIT_EXPECT_KASAN_FAIL(test,
649 static void kasan_strings(struct kunit *test)
656 kunit_info(test,
662 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
673 KUNIT_EXPECT_KASAN_FAIL(test, kasan_ptr_result = strchr(ptr, '1'));
675 KUNIT_EXPECT_KASAN_FAIL(test, kasan_ptr_result = strrchr(ptr, '1'));
677 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strcmp(ptr, "2"));
679 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strncmp(ptr, "2", 1));
681 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strlen(ptr));
683 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = strnlen(ptr, 1));
686 static void kasan_bitops_modify(struct kunit *test, int nr, void *addr)
688 KUNIT_EXPECT_KASAN_FAIL(test, set_bit(nr, addr));
689 KUNIT_EXPECT_KASAN_FAIL(test, __set_bit(nr, addr));
690 KUNIT_EXPECT_KASAN_FAIL(test, clear_bit(nr, addr));
691 KUNIT_EXPECT_KASAN_FAIL(test, __clear_bit(nr, addr));
692 KUNIT_EXPECT_KASAN_FAIL(test, clear_bit_unlock(nr, addr));
693 KUNIT_EXPECT_KASAN_FAIL(test, __clear_bit_unlock(nr, addr));
694 KUNIT_EXPECT_KASAN_FAIL(test, change_bit(nr, addr));
695 KUNIT_EXPECT_KASAN_FAIL(test, __change_bit(nr, addr));
698 static void kasan_bitops_test_and_modify(struct kunit *test, int nr, void *addr)
700 KUNIT_EXPECT_KASAN_FAIL(test, test_and_set_bit(nr, addr));
701 KUNIT_EXPECT_KASAN_FAIL(test, __test_and_set_bit(nr, addr));
702 KUNIT_EXPECT_KASAN_FAIL(test, test_and_set_bit_lock(nr, addr));
703 KUNIT_EXPECT_KASAN_FAIL(test, test_and_clear_bit(nr, addr));
704 KUNIT_EXPECT_KASAN_FAIL(test, __test_and_clear_bit(nr, addr));
705 KUNIT_EXPECT_KASAN_FAIL(test, test_and_change_bit(nr, addr));
706 KUNIT_EXPECT_KASAN_FAIL(test, __test_and_change_bit(nr, addr));
707 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = test_bit(nr, addr));
710 KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result =
715 static void kasan_bitops_generic(struct kunit *test)
719 /* This test is specifically crafted for the generic mode. */
721 kunit_info(test, "CONFIG_KASAN_GENERIC required\n");
730 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, bits);
737 kasan_bitops_modify(test, BITS_PER_LONG, bits);
742 kasan_bitops_test_and_modify(test, BITS_PER_LONG + BITS_PER_BYTE, bits);
747 static void kasan_bitops_tags(struct kunit *test)
751 /* This test is specifically crafted for the tag-based mode. */
753 kunit_info(test, "CONFIG_KASAN_SW_TAGS required\n");
759 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, bits);
762 kasan_bitops_modify(test, BITS_PER_LONG, (void *)bits + 48);
763 kasan_bitops_test_and_modify(test, BITS_PER_LONG + BITS_PER_BYTE, (void *)bits + 48);
768 static void kmalloc_double_kzfree(struct kunit *test)
774 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr);
777 KUNIT_EXPECT_KASAN_FAIL(test, kfree_sensitive(ptr));
780 static void vmalloc_oob(struct kunit *test)
785 kunit_info(test, "CONFIG_KASAN_VMALLOC is not enabled.");
794 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, area);
796 KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)area)[3100]);