On 4/13/21 12:07 PM, glittao@xxxxxxxxx wrote: > From: Oliver Glitta <glittao@xxxxxxxxx> > > SLUB has resiliency_test() function which is hidden behind #ifdef > SLUB_RESILIENCY_TEST that is not part of Kconfig, so nobody > runs it. KUnit should be a proper replacement for it. > > Try changing byte in redzone after allocation and changing > pointer to next free node, first byte, 50th byte and redzone > byte. Check if validation finds errors. > > There are several differences from the original resiliency test: > Tests create own caches with known state instead of corrupting > shared kmalloc caches. > > The corruption of freepointer uses correct offset, the original > resiliency test got broken with freepointer changes. > > Scratch changing random byte test, because it does not have > meaning in this form where we need deterministic results. > > Add new option CONFIG_SLUB_KUNIT_TEST in Kconfig. > Because the test deliberatly modifies non-allocated objects, it depends on > !KASAN which would have otherwise prevented that. > > Use kunit_resource to count errors in cache and silence bug reports. > Count error whenever slab_bug() or slab_fix() is called or when > the count of pages is wrong. > > Signed-off-by: Oliver Glitta <glittao@xxxxxxxxx> Acked-by: Vlastimil Babka <vbabka@xxxxxxx> (again with a disclaimer that I'm the advisor of Oliver's student project)