diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/syscall.c | 1 | ||||
| -rw-r--r-- | lib/test_kasan.c | 10 | 
2 files changed, 11 insertions, 0 deletions
diff --git a/lib/syscall.c b/lib/syscall.c index 17d5ff5fa6a3..2c6cd1b5c3ea 100644 --- a/lib/syscall.c +++ b/lib/syscall.c @@ -12,6 +12,7 @@ static int collect_syscall(struct task_struct *target, long *callno,  	if (!try_get_task_stack(target)) {  		/* Task has no stack, so the task isn't in a syscall. */ +		*sp = *pc = 0;  		*callno = -1;  		return 0;  	} diff --git a/lib/test_kasan.c b/lib/test_kasan.c index 0b1d3140fbb8..a25c9763fce1 100644 --- a/lib/test_kasan.c +++ b/lib/test_kasan.c @@ -20,6 +20,7 @@  #include <linux/string.h>  #include <linux/uaccess.h>  #include <linux/module.h> +#include <linux/kasan.h>  /*   * Note: test functions are marked noinline so that their names appear in @@ -474,6 +475,12 @@ static noinline void __init use_after_scope_test(void)  static int __init kmalloc_tests_init(void)  { +	/* +	 * Temporarily enable multi-shot mode. Otherwise, we'd only get a +	 * report for the first case. +	 */ +	bool multishot = kasan_save_enable_multi_shot(); +  	kmalloc_oob_right();  	kmalloc_oob_left();  	kmalloc_node_oob_right(); @@ -499,6 +506,9 @@ static int __init kmalloc_tests_init(void)  	ksize_unpoisons_memory();  	copy_user_test();  	use_after_scope_test(); + +	kasan_restore_multi_shot(multishot); +  	return -EAGAIN;  }  | 
