kasan: move disable_trace_on_warning to start_report
authorAndrey Konovalov <andreyknvl@google.com>
Fri, 25 Mar 2022 01:12:40 +0000 (18:12 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 25 Mar 2022 02:06:49 +0000 (19:06 -0700)
Move the disable_trace_on_warning() call, which enables the
/proc/sys/kernel/traceoff_on_warning interface for KASAN bugs, to
start_report(), so that it functions for all types of KASAN reports.

Link: https://lkml.kernel.org/r/7c066c5de26234ad2cebdd931adfe437f8a95d58.1646237226.git.andreyknvl@google.com
Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
Reviewed-by: Alexander Potapenko <glider@google.com>
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Marco Elver <elver@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/kasan/report.c

index 0b6c8a14f0ea045ab2ba2b8a8daabb0fa5787368..9286ff6ae1a7b289d2c4fcd2fe44ad11638b7bc4 100644 (file)
@@ -129,6 +129,8 @@ static DEFINE_SPINLOCK(report_lock);
 
 static void start_report(unsigned long *flags, bool sync)
 {
+       /* Respect the /proc/sys/kernel/traceoff_on_warning interface. */
+       disable_trace_on_warning();
        /* Update status of the currently running KASAN test. */
        update_kunit_status(sync);
        /* Make sure we don't end up in loop. */
@@ -421,7 +423,6 @@ static void __kasan_report(unsigned long addr, size_t size, bool is_write,
        void *untagged_addr;
        unsigned long flags;
 
-       disable_trace_on_warning();
        start_report(&flags, true);
 
        tagged_addr = (void *)addr;