The patch titled Subject: kasan: test: consolidate workarounds for unwanted __alloc_size() protection has been added to the -mm tree. Its filename is kasan-test-consolidate-workarounds-for-unwanted-__alloc_size-protection.patch This patch should soon appear at https://ozlabs.org/~akpm/mmots/broken-out/kasan-test-consolidate-workarounds-for-unwanted-__alloc_size-protection.patch and later at https://ozlabs.org/~akpm/mmotm/broken-out/kasan-test-consolidate-workarounds-for-unwanted-__alloc_size-protection.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Kees Cook <keescook@xxxxxxxxxxxx> Subject: kasan: test: consolidate workarounds for unwanted __alloc_size() protection This fixes "lib/test_kasan.c: use underlying string helpers" to avoid needing new helpers. As done in "kasan: test: bypass __alloc_size checks", just use OPTIMIZER_HIDE_VAR(). Additionally converts a use of "volatile", which was trying to work around similar detection. Link: https://lkml.kernel.org/r/20211020193807.40684-1-keescook@xxxxxxxxxxxx Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx> Cc: Arnd Bergmann <arnd@xxxxxxxx> Cc: Andrey Ryabinin <ryabinin.a.a@xxxxxxxxx> Cc: Alexander Potapenko <glider@xxxxxxxxxx> Cc: Andrey Konovalov <andreyknvl@xxxxxxxxx> Cc: Dmitry Vyukov <dvyukov@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- lib/test_kasan.c | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) --- a/lib/test_kasan.c~kasan-test-consolidate-workarounds-for-unwanted-__alloc_size-protection +++ a/lib/test_kasan.c @@ -525,12 +525,13 @@ static void kmalloc_memmove_invalid_size { char *ptr; size_t size = 64; - volatile size_t invalid_size = size; + size_t invalid_size = size; ptr = kmalloc(size, GFP_KERNEL); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); memset((char *)ptr, 0, 64); + OPTIMIZER_HIDE_VAR(invalid_size); KUNIT_EXPECT_KASAN_FAIL(test, memmove((char *)ptr, (char *)ptr + 4, invalid_size)); kfree(ptr); @@ -852,21 +853,6 @@ static void kmem_cache_invalid_free(stru kmem_cache_destroy(cache); } -/* - * noinline wrappers to prevent the compiler from noticing the overflow - * at compile time rather than having kasan catch it. - */ -static noinline void *__kasan_memchr(const void *s, int c, size_t n) -{ - return memchr(s, c, n); -} - -static noinline int __kasan_memcmp(const void *s1, const void *s2, size_t n) -{ - return memcmp(s1, s2, n); -} - - static void kasan_memchr(struct kunit *test) { char *ptr; @@ -884,8 +870,9 @@ static void kasan_memchr(struct kunit *t ptr = kmalloc(size, GFP_KERNEL | __GFP_ZERO); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); + OPTIMIZER_HIDE_VAR(size); KUNIT_EXPECT_KASAN_FAIL(test, - kasan_ptr_result = __kasan_memchr(ptr, '1', size + 1)); + kasan_ptr_result = memchr(ptr, '1', size + 1)); kfree(ptr); } @@ -909,8 +896,9 @@ static void kasan_memcmp(struct kunit *t KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); memset(arr, 0, sizeof(arr)); + OPTIMIZER_HIDE_VAR(size); KUNIT_EXPECT_KASAN_FAIL(test, - kasan_int_result = __kasan_memcmp(ptr, arr, size+1)); + kasan_int_result = memcmp(ptr, arr, size+1)); kfree(ptr); } _ Patches currently in -mm which might be from keescook@xxxxxxxxxxxx are kasan-test-bypass-__alloc_size-checks.patch rapidio-avoid-bogus-__alloc_size-warning.patch compiler-attributes-add-__alloc_size-for-better-bounds-checking.patch slab-clean-up-function-prototypes.patch slab-add-__alloc_size-attributes-for-better-bounds-checking.patch mm-kvmalloc-add-__alloc_size-attributes-for-better-bounds-checking.patch mm-vmalloc-add-__alloc_size-attributes-for-better-bounds-checking.patch mm-page_alloc-add-__alloc_size-attributes-for-better-bounds-checking.patch percpu-add-__alloc_size-attributes-for-better-bounds-checking.patch kasan-test-consolidate-workarounds-for-unwanted-__alloc_size-protection.patch maintainers-add-exec-binfmt-section-with-myself-and-eric.patch binfmt_elf-reintroduce-using-map_fixed_noreplace.patch