Message ID | 20200606040349.246780-6-davidgow@google.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | KUnit-KASAN Integration | expand |
On Fri, Jun 5, 2020 at 9:04 PM 'David Gow' via KUnit Development <kunit-dev@googlegroups.com> wrote: > > KASAN errors will currently trigger a panic when panic_on_warn is set. > This renders kasan_multishot useless, as further KASAN errors won't be > reported if the kernel has already paniced. By making kasan_multishot > disable this behaviour for KASAN errors, we can still have the benefits > of panic_on_warn for non-KASAN warnings, yet be able to use > kasan_multishot. > > This is particularly important when running KASAN tests, which need to > trigger multiple KASAN errors: previously these would panic the system > if panic_on_warn was set, now they can run (and will panic the system > should non-KASAN warnings show up). > > Signed-off-by: David Gow <davidgow@google.com> > Reviewed-by: Andrey Konovalov <andreyknvl@google.com> Reviewed-by: Brendan Higgins <brendanhiggins@google.com>
diff --git a/mm/kasan/report.c b/mm/kasan/report.c index 45f3c23f54cb..dc9fc5c09ea3 100644 --- a/mm/kasan/report.c +++ b/mm/kasan/report.c @@ -94,7 +94,7 @@ static void end_report(unsigned long *flags) pr_err("==================================================================\n"); add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE); spin_unlock_irqrestore(&report_lock, *flags); - if (panic_on_warn) { + if (panic_on_warn && !test_bit(KASAN_BIT_MULTI_SHOT, &kasan_flags)) { /* * This thread may hit another WARN() in the panic path. * Resetting this prevents additional WARN() from panicking the