kasan: speed up match_all_mem_tag test for SW_TAGS
authorAndrey Konovalov <andreyknvl@google.com>
Thu, 21 Dec 2023 20:04:53 +0000 (21:04 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 29 Dec 2023 19:58:46 +0000 (11:58 -0800)
Checking all 256 possible tag values in the match_all_mem_tag KASAN test
is slow and produces 256 reports.  Instead, just check the first 8 and the
last 8.

Link: https://lkml.kernel.org/r/6fe51262defd80cdc1150c42404977aafd1b6167.1703188911.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>
mm/kasan/kasan_test.c

index 691c15fc7cdbdc371f6b888db682d10b679356a0..971cfff4ca0b78f259d26acd68801bed7e6e4e4e 100644 (file)
@@ -1797,6 +1797,14 @@ static void match_all_mem_tag(struct kunit *test)
 
        /* For each possible tag value not matching the pointer tag. */
        for (tag = KASAN_TAG_MIN; tag <= KASAN_TAG_KERNEL; tag++) {
+               /*
+                * For Software Tag-Based KASAN, skip the majority of tag
+                * values to avoid the test printing too many reports.
+                */
+               if (IS_ENABLED(CONFIG_KASAN_SW_TAGS) &&
+                   tag >= KASAN_TAG_MIN + 8 && tag <= KASAN_TAG_KERNEL - 8)
+                       continue;
+
                if (tag == get_tag(ptr))
                        continue;