On Wed, Sep 13, 2023 at 1:32 AM Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx> wrote: > > We require access to this kasan helper in BPF code in the next patch > where we have to unpoison the task stack when we unwind and reset the > stack frame from bpf_throw, and it never really unpoisons the poisoned > stack slots on entry when compiler instrumentation is generated by > CONFIG_KASAN_STACK and inline instrumentation is supported. > > Also, remove the declaration from mm/kasan/kasan.h as we put it in the > header file kasan.h. > > Cc: Andrey Ryabinin <ryabinin.a.a@xxxxxxxxx> > Cc: Alexander Potapenko <glider@xxxxxxxxxx> > Cc: Andrey Konovalov <andreyknvl@xxxxxxxxx> > Cc: Dmitry Vyukov <dvyukov@xxxxxxxxxx> > Cc: Vincenzo Frascino <vincenzo.frascino@xxxxxxx> > Suggested-by: Andrey Konovalov <andreyknvl@xxxxxxxxx> > Signed-off-by: Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx> > --- > include/linux/kasan.h | 2 ++ > mm/kasan/kasan.h | 1 - > 2 files changed, 2 insertions(+), 1 deletion(-) > > diff --git a/include/linux/kasan.h b/include/linux/kasan.h > index 819b6bc8ac08..7a463f814db2 100644 > --- a/include/linux/kasan.h > +++ b/include/linux/kasan.h > @@ -283,8 +283,10 @@ static inline bool kasan_check_byte(const void *address) > > #if defined(CONFIG_KASAN) && defined(CONFIG_KASAN_STACK) > void kasan_unpoison_task_stack(struct task_struct *task); > +asmlinkage void kasan_unpoison_task_stack_below(const void *watermark); > #else > static inline void kasan_unpoison_task_stack(struct task_struct *task) {} > +static inline void kasan_unpoison_task_stack_below(const void *watermark) {} > #endif > > #ifdef CONFIG_KASAN_GENERIC > diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h > index 2e973b36fe07..5eefe202bb8f 100644 > --- a/mm/kasan/kasan.h > +++ b/mm/kasan/kasan.h > @@ -558,7 +558,6 @@ void kasan_restore_multi_shot(bool enabled); > * code. Declared here to avoid warnings about missing declarations. > */ > > -asmlinkage void kasan_unpoison_task_stack_below(const void *watermark); > void __asan_register_globals(void *globals, ssize_t size); > void __asan_unregister_globals(void *globals, ssize_t size); > void __asan_handle_no_return(void); > -- > 2.41.0 > Reviewed-by: Andrey Konovalov <andreyknvl@xxxxxxxxx> Thanks!