46 lines
1.9 KiB
Diff
46 lines
1.9 KiB
Diff
From 8c47c2c4bebf98d0624c15cecef00536d50d79a6 Mon Sep 17 00:00:00 2001
|
|
From: Jann Horn <jannh@google.com>
|
|
Date: Mon, 28 Jul 2025 22:11:54 +0200
|
|
Subject: kasan/test: fix protection against compiler elision
|
|
|
|
The kunit test is using assignments to
|
|
"static volatile void *kasan_ptr_result" to prevent elision of memory
|
|
loads, but that's not working:
|
|
In this variable definition, the "volatile" applies to the "void", not to
|
|
the pointer.
|
|
To make "volatile" apply to the pointer as intended, it must follow
|
|
after the "*".
|
|
|
|
This makes the kasan_memchr test pass again on my system. The
|
|
kasan_strings test is still failing because all the definitions of
|
|
load_unaligned_zeropad() are lacking explicit instrumentation hooks and
|
|
ASAN does not instrument asm() memory operands.
|
|
|
|
Link: https://lkml.kernel.org/r/20250728-kasan-kunit-fix-volatile-v1-1-e7157c9af82d@google.com
|
|
Fixes: 5f1c8108e7ad ("mm:kasan: fix sparse warnings: Should it be static?")
|
|
Signed-off-by: Jann Horn <jannh@google.com>
|
|
Cc: Alexander Potapenko <glider@google.com>
|
|
Cc: Andrey Konovalov <andreyknvl@gmail.com>
|
|
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
|
|
Cc: Dmitriy Vyukov <dvyukov@google.com>
|
|
Cc: Jann Horn <jannh@google.com>
|
|
Cc: Nihar Chaithanya <niharchaithanya@gmail.com>
|
|
Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
|
|
Cc: <stable@vger.kernel.org>
|
|
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
|
---
|
|
mm/kasan/kasan_test_c.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
--- a/mm/kasan/kasan_test_c.c
|
|
+++ b/mm/kasan/kasan_test_c.c
|
|
@@ -47,7 +47,7 @@ static struct {
|
|
* Some tests use these global variables to store return values from function
|
|
* calls that could otherwise be eliminated by the compiler as dead code.
|
|
*/
|
|
-static volatile void *kasan_ptr_result;
|
|
+static void *volatile kasan_ptr_result;
|
|
static volatile int kasan_int_result;
|
|
|
|
/* Probe for console output: obtains test_status lines of interest. */
|