On 10/29/19 7:20 AM, Daniel Axtens wrote: > Supporting VMAP_STACK with KASAN_VMALLOC is straightforward: > > - clear the shadow region of vmapped stacks when swapping them in > - tweak Kconfig to allow VMAP_STACK to be turned on with KASAN > > Reviewed-by: Dmitry Vyukov <dvyukov@xxxxxxxxxx> > Signed-off-by: Daniel Axtens <dja@xxxxxxxxxx> > --- Reviewed-by: Andrey Ryabinin <aryabinin@xxxxxxxxxxxxx> > > diff --git a/kernel/fork.c b/kernel/fork.c > index 954e875e72b1..a6e5249ad74b 100644 > --- a/kernel/fork.c > +++ b/kernel/fork.c > @@ -94,6 +94,7 @@ > #include <linux/livepatch.h> > #include <linux/thread_info.h> > #include <linux/stackleak.h> > +#include <linux/kasan.h> > > #include <asm/pgtable.h> > #include <asm/pgalloc.h> > @@ -224,6 +225,9 @@ static unsigned long *alloc_thread_stack_node(struct task_struct *tsk, int node) > if (!s) > continue; > > + /* Clear the KASAN shadow of the stack. */ > + kasan_unpoison_shadow(s->addr, THREAD_SIZE); > + Just sharing the thought. We could possibly add poisoning in free_thread_stack() to catch possible usage of freed cached stack. But it might be a bad idea because cached stacks supposed to be reused very quickly. So it might just add overhead without much gain. > /* Clear stale pointers from reused stack. */ > memset(s->addr, 0, THREAD_SIZE); > >