path: root/mm
diff options
authorAndrey Konovalov <>2021-02-24 12:05:34 -0800
committerLinus Torvalds <>2021-02-24 13:38:31 -0800
commit2e4bde6a1e3a3feb8511685b8c97be668728eefb (patch)
treef8decf829afbdffe9c7dbf096f96a9d4917172be /mm
parent5d92bdffd2d53f98de683229c0ad7d028703fdba (diff)
kasan: add compiler barriers to KUNIT_EXPECT_KASAN_FAIL
It might not be obvious to the compiler that the expression must be executed between writing and reading to fail_data. In this case, the compiler might reorder or optimize away some of the accesses, and the tests will fail. Add compiler barriers around the expression in KUNIT_EXPECT_KASAN_FAIL and use READ/WRITE_ONCE() for accessing fail_data fields. Link: Link: Signed-off-by: Andrey Konovalov <> Reviewed-by: Marco Elver <> Reviewed-by: Alexander Potapenko <> Cc: Andrey Ryabinin <> Cc: Branislav Rankov <> Cc: Catalin Marinas <> Cc: Dmitry Vyukov <> Cc: Evgenii Stepanov <> Cc: Kevin Brodsky <> Cc: Peter Collingbourne <> Cc: Vincenzo Frascino <> Cc: Will Deacon <> Signed-off-by: Andrew Morton <> Signed-off-by: Linus Torvalds <>
Diffstat (limited to 'mm')
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/kasan/report.c b/mm/kasan/report.c
index e93d7973792e..234f35a84f19 100644
--- a/mm/kasan/report.c
+++ b/mm/kasan/report.c
@@ -331,7 +331,7 @@ static void kasan_update_kunit_status(struct kunit *cur_test)
kasan_data = (struct kunit_kasan_expectation *)resource->data;
- kasan_data->report_found = true;
+ WRITE_ONCE(kasan_data->report_found, true);