Re: next: x86_64: kunit test crashed and kernel panic

From: Marco Elver
Date: Thu Feb 16 2023 - 18:52:57 EST


On Thu, 16 Feb 2023 at 19:59, Alexander Potapenko <glider@xxxxxxxxxx> wrote:
>
> >
> > > <4>[ 38.796558] ? kmalloc_memmove_negative_size+0xeb/0x1f0
> > > <4>[ 38.797376] ? __pfx_kmalloc_memmove_negative_size+0x10/0x10
> >
> > Most certainly kmalloc_memmove_negative_size() is related.
> > Looks like we fail to intercept the call to memmove() in this test,
> > passing -2 to the actual __memmove().
>
> This was introduced by 69d4c0d321869 ("entry, kasan, x86: Disallow
> overriding mem*() functions")

Ah, thanks!

> There's Marco's "kasan: Emit different calls for instrumentable
> memintrinsics", but it doesn't fix the problem for me (looking
> closer...), and GCC support is still not there, right?

Only Clang 15 supports it at this point. Some future GCC will support it.

> Failing to intercept memcpy/memset/memmove should normally result in
> false negatives, but kmalloc_memmove_negative_size() makes a strong
> assumption that KASAN will catch and prevent memmove(dst, src, -2).

Ouch - ok, so we need to skip these tests if we know memintrinsics
aren't instrumented.

I've sent a series here:
https://lore.kernel.org/all/20230216234522.3757369-1-elver@xxxxxxxxxx/