On Wed, 11 Aug 2021 at 21:23, <andrey.konovalov@xxxxxxxxx> wrote: > > From: Andrey Konovalov <andreyknvl@xxxxxxxxx> > > Some KASAN tests use global variables to store function returns values > so that the compiler doesn't optimize away these functions. > > ksize_uaf() doesn't call any functions, so it doesn't need to use > kasan_int_result. Use volatile accesses instead, to be consistent with > other similar tests. > > Signed-off-by: Andrey Konovalov <andreyknvl@xxxxxxxxx> Reviewed-by: Marco Elver <elver@xxxxxxxxxx> Although I do wonder if the compiler might one day mess with the volatile reads. At least this way we might also catch if the compiler messes up volatile reads. ;-) > --- > lib/test_kasan.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/lib/test_kasan.c b/lib/test_kasan.c > index efd0da5c750f..e159d24b3b49 100644 > --- a/lib/test_kasan.c > +++ b/lib/test_kasan.c > @@ -731,8 +731,8 @@ static void ksize_uaf(struct kunit *test) > kfree(ptr); > > KUNIT_EXPECT_KASAN_FAIL(test, ksize(ptr)); > - KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = *ptr); > - KUNIT_EXPECT_KASAN_FAIL(test, kasan_int_result = *(ptr + size)); > + KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[0]); > + KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)ptr)[size]); > } > > static void kasan_stack_oob(struct kunit *test) > -- > 2.25.1 >