On Sun, Nov 11, 2018 at 11:10:17PM +0800, Zhizhou Zhang wrote:
> ftrace_ops_test() passed local varible parameter to hash_contains_ip(),
> which could result KASAN stack-out-of-bounds warning.
> 
> Signed-off-by: Zhizhou Zhang <zhizhouzh...@asrmicro.com>
> ---
>  kernel/trace/ftrace.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
> index f536f60..6e11f90 100644
> --- a/kernel/trace/ftrace.c
> +++ b/kernel/trace/ftrace.c
> @@ -1522,6 +1522,8 @@ ftrace_ops_test(struct ftrace_ops *ops, unsigned long 
> ip, void *regs)
>       rcu_assign_pointer(hash.filter_hash, ops->func_hash->filter_hash);
>       rcu_assign_pointer(hash.notrace_hash, ops->func_hash->notrace_hash);
>  
> +     kasan_unpoison_task_stack(current);

This is extremely heavy-handed, and will mask legitimate stack-out-of-bounds
errors. 

Passing a stack-local variable by reference *should not* result in KASAN
warnings unless KASAN itself is broken. Can you please give an example report
when this occurs?

Which compiler are you using?

Thanks,
Mark.

> +
>       if (hash_contains_ip(ip, &hash))
>               ret = 1;
>       else
> -- 
> 2.7.4
> 

Reply via email to