kmsan: allow using __msan_instrument_asm_store() inside runtime
authorAlexander Potapenko <glider@google.com>
Mon, 28 Nov 2022 09:45:41 +0000 (10:45 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 12 Dec 2022 02:12:11 +0000 (18:12 -0800)
commit85716a80c16dd6b6d1aaed87cd4b91c9b1d9b9b2
tree903afb31d5696113fb7901bb70fd57a834f67e12
parent1e8e4a7cc2fa3017b1daf02612e095d51924ce1e
kmsan: allow using __msan_instrument_asm_store() inside runtime

In certain cases (e.g.  when handling a softirq)
__msan_instrument_asm_store(&var, sizeof(var)) may be called with from
within KMSAN runtime, but later the value of @var is used with
!kmsan_in_runtime(), leading to false positives.

Because kmsan_internal_unpoison_memory() doesn't take locks, it should be
fine to call it without kmsan_in_runtime() checks, which fixes the
mentioned false positives.

Link: https://lkml.kernel.org/r/20221128094541.2645890-2-glider@google.com
Signed-off-by: Alexander Potapenko <glider@google.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Eric Biggers <ebiggers@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Marco Elver <elver@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/kmsan/instrumentation.c