On Thu, 24 Jun 2021 at 13:27, <yee.lee@xxxxxxxxxxxx> wrote: > > From: Yee Lee <yee.lee@xxxxxxxxxxxx> > > Issue: when SLUB debug is on, hwtag kasan_unpoison() would overwrite > the redzone of object with unaligned size. > > An additional memzero_explicit() path is added to replacing init by > hwtag instruction for those unaligned size at SLUB debug mode. > > Signed-off-by: Yee Lee <yee.lee@xxxxxxxxxxxx> > --- > mm/kasan/kasan.h | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h > index 8f450bc28045..d1054f35838f 100644 > --- a/mm/kasan/kasan.h > +++ b/mm/kasan/kasan.h > @@ -387,6 +387,12 @@ static inline void kasan_unpoison(const void *addr, size_t size, bool init) > > if (WARN_ON((unsigned long)addr & KASAN_GRANULE_MASK)) > return; > +#if IS_ENABLED(CONFIG_SLUB_DEBUG) Avoid the #if. I think none of the stuff referenced here is only available if CONFIG_SLUB_DEBUG. In that case, please just write: if (IS_ENABLED(CONFIG_SLUB_DEBUG) && init && .........) { The compiler will correctly optimize out the branch if the config option is not enabled. But the benefit is we compile-test this code with all configs. > + if (init && ((unsigned long)size & KASAN_GRANULE_MASK)) { > + init = false; > + memzero_explicit((void *)addr, size); > + } > +#endif Thanks, -- Marco