kasan: restructure kasan_report
authorAndrey Konovalov <andreyknvl@google.com>
Fri, 25 Mar 2022 01:12:49 +0000 (18:12 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 25 Mar 2022 02:06:49 +0000 (19:06 -0700)
Restructure kasan_report() to make reviewing the subsequent patches
easier.

Link: https://lkml.kernel.org/r/ca28042889858b8cc4724d3d4378387f90d7a59d.1646237226.git.andreyknvl@google.com
Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
Cc: 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 a0d4a9d..41c7966 100644 (file)
@@ -457,15 +457,18 @@ static void __kasan_report(void *addr, size_t size, bool is_write,
 bool kasan_report(unsigned long addr, size_t size, bool is_write,
                        unsigned long ip)
 {
-       unsigned long flags = user_access_save();
-       bool ret = false;
+       unsigned long ua_flags = user_access_save();
+       bool ret = true;
 
-       if (likely(report_enabled())) {
-               __kasan_report((void *)addr, size, is_write, ip);
-               ret = true;
+       if (unlikely(!report_enabled())) {
+               ret = false;
+               goto out;
        }
 
-       user_access_restore(flags);
+       __kasan_report((void *)addr, size, is_write, ip);
+
+out:
+       user_access_restore(ua_flags);
 
        return ret;
 }