This patchset contains everything needed to integrate KASAN and KUnit.
KUnit will be able to: (1) Fail tests when an unexpected KASAN error occurs (2) Pass tests when an expected KASAN error occurs
Convert KASAN tests to KUnit with the exception of copy_user_test because KUnit is unable to test those.
Add documentation on how to run the KASAN tests with KUnit and what to expect when running these tests.
Depends on [1].
Changes since v2: - Due to Alan's changes in [1], KUnit can be built as a module. - The name of the tests that could not be run with KUnit has been changed to be more generic: test_kasan_module. - Documentation on how to run the new KASAN tests and what to expect when running them has been added. - Some variables and functions are now static. - Now save/restore panic_on_warn in a similar way to kasan_multi_shot and renamed the init/exit functions to be more generic to accommodate. - Due to [2] in kasan_strings, kasan_memchr, and kasan_memcmp will fail if CONFIG_AMD_MEM_ENCRYPT is enabled so return early and print message explaining this circumstance. - Changed preprocessor checks to C checks where applicable.
[1] https://lore.kernel.org/linux-kselftest/1585313122-26441-1-git-send-email-al... [2] https://bugzilla.kernel.org/show_bug.cgi?id=206337
Patricia Alfonso (4): Add KUnit Struct to Current Task KUnit: KASAN Integration KASAN: Port KASAN Tests to KUnit KASAN: Testing Documentation
Documentation/dev-tools/kasan.rst | 70 +++ include/kunit/test.h | 5 + include/linux/kasan.h | 6 + include/linux/sched.h | 4 + lib/Kconfig.kasan | 15 +- lib/Makefile | 3 +- lib/kunit/test.c | 13 +- lib/test_kasan.c | 686 +++++++++++++----------------- lib/test_kasan_module.c | 76 ++++ mm/kasan/report.c | 33 ++ 10 files changed, 521 insertions(+), 390 deletions(-) create mode 100644 lib/test_kasan_module.c