aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/test_kasan.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/test_kasan.c b/lib/test_kasan.c
index ef1a3ac1397e..2724f86c4cef 100644
--- a/lib/test_kasan.c
+++ b/lib/test_kasan.c
@@ -472,6 +472,26 @@ static noinline void __init use_after_scope_test(void)
472 p[1023] = 1; 472 p[1023] = 1;
473} 473}
474 474
475static noinline void __init kasan_alloca_oob_left(void)
476{
477 volatile int i = 10;
478 char alloca_array[i];
479 char *p = alloca_array - 1;
480
481 pr_info("out-of-bounds to left on alloca\n");
482 *(volatile char *)p;
483}
484
485static noinline void __init kasan_alloca_oob_right(void)
486{
487 volatile int i = 10;
488 char alloca_array[i];
489 char *p = alloca_array + i;
490
491 pr_info("out-of-bounds to right on alloca\n");
492 *(volatile char *)p;
493}
494
475static int __init kmalloc_tests_init(void) 495static int __init kmalloc_tests_init(void)
476{ 496{
477 /* 497 /*
@@ -502,6 +522,8 @@ static int __init kmalloc_tests_init(void)
502 memcg_accounted_kmem_cache(); 522 memcg_accounted_kmem_cache();
503 kasan_stack_oob(); 523 kasan_stack_oob();
504 kasan_global_oob(); 524 kasan_global_oob();
525 kasan_alloca_oob_left();
526 kasan_alloca_oob_right();
505 ksize_unpoisons_memory(); 527 ksize_unpoisons_memory();
506 copy_user_test(); 528 copy_user_test();
507 use_after_scope_test(); 529 use_after_scope_test();