• David Gow's avatar
    kasan: test: improve failure message in KUNIT_EXPECT_KASAN_FAIL() · 3ff16d30
    David Gow authored
    The KUNIT_EXPECT_KASAN_FAIL() macro currently uses KUNIT_EXPECT_EQ() to
    compare fail_data.report_expected and fail_data.report_found.  This always
    gave a somewhat useless error message on failure, but the addition of
    extra compile-time checking with READ_ONCE() has caused it to get much
    longer, and be truncated before anything useful is displayed.
    
    Instead, just check fail_data.report_found by hand (we've just set
    report_expected to 'true'), and print a better failure message with
    KUNIT_FAIL().  Because of this, report_expected is no longer used
    anywhere, and can be removed.
    
    Beforehand, a failure in:
    KUNIT_EXPECT_KASAN_FAIL(test, ((volatile char *)area)[3100]);
    would have looked like:
    [22:00:34] [FAILED] vmalloc_oob
    [22:00:34]     # vmalloc_oob: EXPECTATION FAILED at lib/test_kasan.c:991
    [22:00:34]     Expected ({ do { extern void __compiletime_assert_705(void) __attribute__((__error__("Unsupported access size for {READ,WRITE}_ONCE()."))); if (!((sizeof(fail_data.report_expected) == sizeof(char) || sizeof(fail_data.repp
    [22:00:34]     not ok 45 - vmalloc_oob
    
    With this change, it instead looks like:
    [22:04:04] [FAILED] vmalloc_oob
    [22:04:04]     # vmalloc_oob: EXPECTATION FAILED at lib/test_kasan.c:993
    [22:04:04]     KASAN failure expected in "((volatile char *)area)[3100]", but none occurred
    [22:04:04]     not ok 45 - vmalloc_oob
    
    Also update the example failure in the documentation to reflect this.
    
    Link: https://lkml.kernel.org/r/20210606005531.165954-1-davidgow@google.comSigned-off-by: default avatarDavid Gow <davidgow@google.com>
    Reviewed-by: default avatarAndrey Konovalov <andreyknvl@gmail.com>
    Reviewed-by: default avatarMarco Elver <elver@google.com>
    Acked-by: default avatarBrendan Higgins <brendanhiggins@google.com>
    Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Daniel Axtens <dja@axtens.net>
    Cc: David Gow <davidgow@google.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    3ff16d30
test_kasan.c 29.4 KB