Message ID | 20221102110611.1085175-1-glider@google.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [1/5] kmsan: core: kmsan_in_runtime() should return true in NMI context | expand |
On Wed, Nov 02, 2022 at 12:06:07PM +0100, Alexander Potapenko wrote: > Without that, every call to __msan_poison_alloca() in NMI may end up > allocating memory, which is NMI-unsafe. > > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: Dmitry Vyukov <dvyukov@google.com> > Cc: Marco Elver <elver@google.com> > Cc: Peter Zijlstra (Intel) <peterz@infradead.org> > Link: https://lore.kernel.org/lkml/20221025221755.3810809-1-glider@google.com/ > Signed-off-by: Alexander Potapenko <glider@google.com> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> > --- > mm/kmsan/kmsan.h | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/mm/kmsan/kmsan.h b/mm/kmsan/kmsan.h > index 961eb658020aa..3cd2050a33e6a 100644 > --- a/mm/kmsan/kmsan.h > +++ b/mm/kmsan/kmsan.h > @@ -125,6 +125,8 @@ static __always_inline bool kmsan_in_runtime(void) > { > if ((hardirq_count() >> HARDIRQ_SHIFT) > 1) > return true; > + if (in_nmi()) > + return true; > return kmsan_get_context()->kmsan_in_runtime; > } > > -- > 2.38.1.273.g43a17bfeac-goog >
diff --git a/mm/kmsan/kmsan.h b/mm/kmsan/kmsan.h index 961eb658020aa..3cd2050a33e6a 100644 --- a/mm/kmsan/kmsan.h +++ b/mm/kmsan/kmsan.h @@ -125,6 +125,8 @@ static __always_inline bool kmsan_in_runtime(void) { if ((hardirq_count() >> HARDIRQ_SHIFT) > 1) return true; + if (in_nmi()) + return true; return kmsan_get_context()->kmsan_in_runtime; }
Without that, every call to __msan_poison_alloca() in NMI may end up allocating memory, which is NMI-unsafe. Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Marco Elver <elver@google.com> Cc: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lore.kernel.org/lkml/20221025221755.3810809-1-glider@google.com/ Signed-off-by: Alexander Potapenko <glider@google.com> --- mm/kmsan/kmsan.h | 2 ++ 1 file changed, 2 insertions(+)