On Thu, 16 Feb 2023 at 19:59, Alexander Potapenko glider@google.com 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@google.com/