On Thu, Jun 17, 2021 at 4:13 PM Daniel Axtens <dja@xxxxxxxxxx> wrote: > > In commit 121e6f3258fe ("mm/vmalloc: hugepage vmalloc mappings"), > __vmalloc_node_range was changed such that __get_vm_area_node was no > longer called with the requested/real size of the vmalloc allocation, but > rather with a rounded-up size. > > This means that __get_vm_area_node called kasan_unpoision_vmalloc() with > a rounded up size rather than the real size. This led to it allowing > access to too much memory and so missing vmalloc OOBs and failing the > kasan kunit tests. > > Pass the real size and the desired shift into __get_vm_area_node. This > allows it to round up the size for the underlying allocators while > still unpoisioning the correct quantity of shadow memory. > > Adjust the other call-sites to pass in PAGE_SHIFT for the shift value. > > Cc: Nicholas Piggin <npiggin@xxxxxxxxx> > Cc: David Gow <davidgow@xxxxxxxxxx> > Cc: Dmitry Vyukov <dvyukov@xxxxxxxxxx> > Cc: Andrey Konovalov <andreyknvl@xxxxxxxxx> > Cc: Uladzislau Rezki (Sony) <urezki@xxxxxxxxx> > Link: https://bugzilla.kernel.org/show_bug.cgi?id=213335 > Fixes: 121e6f3258fe ("mm/vmalloc: hugepage vmalloc mappings") > Signed-off-by: Daniel Axtens <dja@xxxxxxxxxx> > --- This fixes the KUnit test failure I was seeing on x86_64, thanks! Tested-by: David Gow <davidgow@xxxxxxxxxx> Cheers, -- David