* [PATCH 0/2] kasan: few improvements on kunit tests @ 2024-11-01 18:40 Sabyrzhan Tasbolatov 2024-11-01 18:40 ` [PATCH 1/2] kasan: use EXPORT_SYMBOL_IF_KUNIT to export symbols Sabyrzhan Tasbolatov 2024-11-01 18:40 ` [PATCH 2/2] kasan: change kasan_atomics kunit test as KUNIT_CASE_SLOW Sabyrzhan Tasbolatov 0 siblings, 2 replies; 5+ messages in thread From: Sabyrzhan Tasbolatov @ 2024-11-01 18:40 UTC (permalink / raw) To: ryabinin.a.a, andreyknvl, elver Cc: arnd, glider, dvyukov, vincenzo.frascino, akpm, kasan-dev, linux-mm, linux-kernel, snovitoll This patch series addresses the issue [1] with KASAN symbols used in the Kunit test, but exported as EXPORT_SYMBOL_GPL. Also a small tweak of marking kasan_atomics() as KUNIT_CASE_SLOW to avoid kunit report that the test should be marked as slow. Both patches have been tested on (CONFIG_KASAN_KUNIT_TEST=y): - x86_64: CONFIG_KASAN=y - arm64: CONFIG_KASAN_HW_TAGS=y [1] https://lore.kernel.org/linux-mm/ZxigQIF59s3_h5PS@infradead.org/T/ EXPORT_SYMBOL_IF_KUNIT Sabyrzhan Tasbolatov (2): kasan: use EXPORT_SYMBOL_IF_KUNIT to export symbols for kunit tests kasan: change kasan_atomics kunit test as KUNIT_CASE_SLOW mm/kasan/hw_tags.c | 7 ++++--- mm/kasan/kasan_test_c.c | 4 +++- mm/kasan/report.c | 17 +++++++++-------- 3 files changed, 16 insertions(+), 12 deletions(-) -- 2.34.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] kasan: use EXPORT_SYMBOL_IF_KUNIT to export symbols 2024-11-01 18:40 [PATCH 0/2] kasan: few improvements on kunit tests Sabyrzhan Tasbolatov @ 2024-11-01 18:40 ` Sabyrzhan Tasbolatov 2024-11-01 23:38 ` Andrey Konovalov 2024-11-01 18:40 ` [PATCH 2/2] kasan: change kasan_atomics kunit test as KUNIT_CASE_SLOW Sabyrzhan Tasbolatov 1 sibling, 1 reply; 5+ messages in thread From: Sabyrzhan Tasbolatov @ 2024-11-01 18:40 UTC (permalink / raw) To: ryabinin.a.a, andreyknvl, elver Cc: arnd, glider, dvyukov, vincenzo.frascino, akpm, kasan-dev, linux-mm, linux-kernel, snovitoll Replace EXPORT_SYMBOL_GPL with EXPORT_SYMBOL_IF_KUNIT to mark the symbols as visible only if CONFIG_KUNIT is enabled. KASAN Kunit test should import the namespace EXPORTED_FOR_KUNIT_TESTING to use these marked symbols. Reported-by: Andrey Konovalov <andreyknvl@gmail.com> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218315 Signed-off-by: Sabyrzhan Tasbolatov <snovitoll@gmail.com> --- mm/kasan/hw_tags.c | 7 ++++--- mm/kasan/kasan_test_c.c | 2 ++ mm/kasan/report.c | 17 +++++++++-------- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/mm/kasan/hw_tags.c b/mm/kasan/hw_tags.c index 9958ebc15d38..ccd66c7a4081 100644 --- a/mm/kasan/hw_tags.c +++ b/mm/kasan/hw_tags.c @@ -8,6 +8,7 @@ #define pr_fmt(fmt) "kasan: " fmt +#include <kunit/visibility.h> #include <linux/init.h> #include <linux/kasan.h> #include <linux/kernel.h> @@ -394,12 +395,12 @@ void kasan_enable_hw_tags(void) #if IS_ENABLED(CONFIG_KASAN_KUNIT_TEST) -EXPORT_SYMBOL_GPL(kasan_enable_hw_tags); +EXPORT_SYMBOL_IF_KUNIT(kasan_enable_hw_tags); -void kasan_force_async_fault(void) +VISIBLE_IF_KUNIT void kasan_force_async_fault(void) { hw_force_async_tag_fault(); } -EXPORT_SYMBOL_GPL(kasan_force_async_fault); +EXPORT_SYMBOL_IF_KUNIT(kasan_force_async_fault); #endif diff --git a/mm/kasan/kasan_test_c.c b/mm/kasan/kasan_test_c.c index a181e4780d9d..3e495c09342e 100644 --- a/mm/kasan/kasan_test_c.c +++ b/mm/kasan/kasan_test_c.c @@ -33,6 +33,8 @@ #define OOB_TAG_OFF (IS_ENABLED(CONFIG_KASAN_GENERIC) ? 0 : KASAN_GRANULE_SIZE) +MODULE_IMPORT_NS(EXPORTED_FOR_KUNIT_TESTING); + static bool multishot; /* Fields set based on lines observed in the console. */ diff --git a/mm/kasan/report.c b/mm/kasan/report.c index b48c768acc84..e5bc4e3ee198 100644 --- a/mm/kasan/report.c +++ b/mm/kasan/report.c @@ -10,6 +10,7 @@ */ #include <kunit/test.h> +#include <kunit/visibility.h> #include <linux/bitops.h> #include <linux/ftrace.h> #include <linux/init.h> @@ -134,18 +135,18 @@ static bool report_enabled(void) #if IS_ENABLED(CONFIG_KASAN_KUNIT_TEST) || IS_ENABLED(CONFIG_KASAN_MODULE_TEST) -bool kasan_save_enable_multi_shot(void) +VISIBLE_IF_KUNIT bool kasan_save_enable_multi_shot(void) { return test_and_set_bit(KASAN_BIT_MULTI_SHOT, &kasan_flags); } -EXPORT_SYMBOL_GPL(kasan_save_enable_multi_shot); +EXPORT_SYMBOL_IF_KUNIT(kasan_save_enable_multi_shot); -void kasan_restore_multi_shot(bool enabled) +VISIBLE_IF_KUNIT void kasan_restore_multi_shot(bool enabled) { if (!enabled) clear_bit(KASAN_BIT_MULTI_SHOT, &kasan_flags); } -EXPORT_SYMBOL_GPL(kasan_restore_multi_shot); +EXPORT_SYMBOL_IF_KUNIT(kasan_restore_multi_shot); #endif @@ -157,17 +158,17 @@ EXPORT_SYMBOL_GPL(kasan_restore_multi_shot); */ static bool kasan_kunit_executing; -void kasan_kunit_test_suite_start(void) +VISIBLE_IF_KUNIT void kasan_kunit_test_suite_start(void) { WRITE_ONCE(kasan_kunit_executing, true); } -EXPORT_SYMBOL_GPL(kasan_kunit_test_suite_start); +EXPORT_SYMBOL_IF_KUNIT(kasan_kunit_test_suite_start); -void kasan_kunit_test_suite_end(void) +VISIBLE_IF_KUNIT void kasan_kunit_test_suite_end(void) { WRITE_ONCE(kasan_kunit_executing, false); } -EXPORT_SYMBOL_GPL(kasan_kunit_test_suite_end); +EXPORT_SYMBOL_IF_KUNIT(kasan_kunit_test_suite_end); static bool kasan_kunit_test_suite_executing(void) { -- 2.34.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] kasan: use EXPORT_SYMBOL_IF_KUNIT to export symbols 2024-11-01 18:40 ` [PATCH 1/2] kasan: use EXPORT_SYMBOL_IF_KUNIT to export symbols Sabyrzhan Tasbolatov @ 2024-11-01 23:38 ` Andrey Konovalov 0 siblings, 0 replies; 5+ messages in thread From: Andrey Konovalov @ 2024-11-01 23:38 UTC (permalink / raw) To: Sabyrzhan Tasbolatov Cc: ryabinin.a.a, elver, arnd, glider, dvyukov, vincenzo.frascino, akpm, kasan-dev, linux-mm, linux-kernel On Fri, Nov 1, 2024 at 7:40 PM Sabyrzhan Tasbolatov <snovitoll@gmail.com> wrote: > > Replace EXPORT_SYMBOL_GPL with EXPORT_SYMBOL_IF_KUNIT to mark the > symbols as visible only if CONFIG_KUNIT is enabled. > > KASAN Kunit test should import the namespace EXPORTED_FOR_KUNIT_TESTING > to use these marked symbols. > > Reported-by: Andrey Konovalov <andreyknvl@gmail.com> > Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218315 > Signed-off-by: Sabyrzhan Tasbolatov <snovitoll@gmail.com> > --- > mm/kasan/hw_tags.c | 7 ++++--- > mm/kasan/kasan_test_c.c | 2 ++ > mm/kasan/report.c | 17 +++++++++-------- > 3 files changed, 15 insertions(+), 11 deletions(-) > > diff --git a/mm/kasan/hw_tags.c b/mm/kasan/hw_tags.c > index 9958ebc15d38..ccd66c7a4081 100644 > --- a/mm/kasan/hw_tags.c > +++ b/mm/kasan/hw_tags.c > @@ -8,6 +8,7 @@ > > #define pr_fmt(fmt) "kasan: " fmt > > +#include <kunit/visibility.h> > #include <linux/init.h> > #include <linux/kasan.h> > #include <linux/kernel.h> > @@ -394,12 +395,12 @@ void kasan_enable_hw_tags(void) > > #if IS_ENABLED(CONFIG_KASAN_KUNIT_TEST) > > -EXPORT_SYMBOL_GPL(kasan_enable_hw_tags); > +EXPORT_SYMBOL_IF_KUNIT(kasan_enable_hw_tags); > > -void kasan_force_async_fault(void) > +VISIBLE_IF_KUNIT void kasan_force_async_fault(void) > { > hw_force_async_tag_fault(); > } > -EXPORT_SYMBOL_GPL(kasan_force_async_fault); > +EXPORT_SYMBOL_IF_KUNIT(kasan_force_async_fault); > > #endif > diff --git a/mm/kasan/kasan_test_c.c b/mm/kasan/kasan_test_c.c > index a181e4780d9d..3e495c09342e 100644 > --- a/mm/kasan/kasan_test_c.c > +++ b/mm/kasan/kasan_test_c.c > @@ -33,6 +33,8 @@ > > #define OOB_TAG_OFF (IS_ENABLED(CONFIG_KASAN_GENERIC) ? 0 : KASAN_GRANULE_SIZE) > > +MODULE_IMPORT_NS(EXPORTED_FOR_KUNIT_TESTING); > + > static bool multishot; > > /* Fields set based on lines observed in the console. */ > diff --git a/mm/kasan/report.c b/mm/kasan/report.c > index b48c768acc84..e5bc4e3ee198 100644 > --- a/mm/kasan/report.c > +++ b/mm/kasan/report.c > @@ -10,6 +10,7 @@ > */ > > #include <kunit/test.h> > +#include <kunit/visibility.h> > #include <linux/bitops.h> > #include <linux/ftrace.h> > #include <linux/init.h> > @@ -134,18 +135,18 @@ static bool report_enabled(void) > > #if IS_ENABLED(CONFIG_KASAN_KUNIT_TEST) || IS_ENABLED(CONFIG_KASAN_MODULE_TEST) > > -bool kasan_save_enable_multi_shot(void) > +VISIBLE_IF_KUNIT bool kasan_save_enable_multi_shot(void) > { > return test_and_set_bit(KASAN_BIT_MULTI_SHOT, &kasan_flags); > } > -EXPORT_SYMBOL_GPL(kasan_save_enable_multi_shot); > +EXPORT_SYMBOL_IF_KUNIT(kasan_save_enable_multi_shot); > > -void kasan_restore_multi_shot(bool enabled) > +VISIBLE_IF_KUNIT void kasan_restore_multi_shot(bool enabled) > { > if (!enabled) > clear_bit(KASAN_BIT_MULTI_SHOT, &kasan_flags); > } > -EXPORT_SYMBOL_GPL(kasan_restore_multi_shot); > +EXPORT_SYMBOL_IF_KUNIT(kasan_restore_multi_shot); > > #endif > > @@ -157,17 +158,17 @@ EXPORT_SYMBOL_GPL(kasan_restore_multi_shot); > */ > static bool kasan_kunit_executing; > > -void kasan_kunit_test_suite_start(void) > +VISIBLE_IF_KUNIT void kasan_kunit_test_suite_start(void) > { > WRITE_ONCE(kasan_kunit_executing, true); > } > -EXPORT_SYMBOL_GPL(kasan_kunit_test_suite_start); > +EXPORT_SYMBOL_IF_KUNIT(kasan_kunit_test_suite_start); > > -void kasan_kunit_test_suite_end(void) > +VISIBLE_IF_KUNIT void kasan_kunit_test_suite_end(void) > { > WRITE_ONCE(kasan_kunit_executing, false); > } > -EXPORT_SYMBOL_GPL(kasan_kunit_test_suite_end); > +EXPORT_SYMBOL_IF_KUNIT(kasan_kunit_test_suite_end); > > static bool kasan_kunit_test_suite_executing(void) > { > -- > 2.34.1 > Reviewed-by: Andrey Konovalov <andreyknvl@gmail.com> Thank you! ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/2] kasan: change kasan_atomics kunit test as KUNIT_CASE_SLOW 2024-11-01 18:40 [PATCH 0/2] kasan: few improvements on kunit tests Sabyrzhan Tasbolatov 2024-11-01 18:40 ` [PATCH 1/2] kasan: use EXPORT_SYMBOL_IF_KUNIT to export symbols Sabyrzhan Tasbolatov @ 2024-11-01 18:40 ` Sabyrzhan Tasbolatov 2024-11-01 23:38 ` Andrey Konovalov 1 sibling, 1 reply; 5+ messages in thread From: Sabyrzhan Tasbolatov @ 2024-11-01 18:40 UTC (permalink / raw) To: ryabinin.a.a, andreyknvl, elver Cc: arnd, glider, dvyukov, vincenzo.frascino, akpm, kasan-dev, linux-mm, linux-kernel, snovitoll During running KASAN Kunit tests with CONFIG_KASAN enabled, the following "warning" is reported by kunit framework: # kasan_atomics: Test should be marked slow (runtime: 2.604703115s) It took 2.6 seconds on my PC (Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz), apparently, due to multiple atomic checks in kasan_atomics_helper(). Let's mark it with KUNIT_CASE_SLOW which reports now as: # kasan_atomics.speed: slow Signed-off-by: Sabyrzhan Tasbolatov <snovitoll@gmail.com> --- mm/kasan/kasan_test_c.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/kasan/kasan_test_c.c b/mm/kasan/kasan_test_c.c index 3e495c09342e..3946fc89a979 100644 --- a/mm/kasan/kasan_test_c.c +++ b/mm/kasan/kasan_test_c.c @@ -2020,7 +2020,7 @@ static struct kunit_case kasan_kunit_test_cases[] = { KUNIT_CASE(kasan_strings), KUNIT_CASE(kasan_bitops_generic), KUNIT_CASE(kasan_bitops_tags), - KUNIT_CASE(kasan_atomics), + KUNIT_CASE_SLOW(kasan_atomics), KUNIT_CASE(vmalloc_helpers_tags), KUNIT_CASE(vmalloc_oob), KUNIT_CASE(vmap_tags), -- 2.34.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] kasan: change kasan_atomics kunit test as KUNIT_CASE_SLOW 2024-11-01 18:40 ` [PATCH 2/2] kasan: change kasan_atomics kunit test as KUNIT_CASE_SLOW Sabyrzhan Tasbolatov @ 2024-11-01 23:38 ` Andrey Konovalov 0 siblings, 0 replies; 5+ messages in thread From: Andrey Konovalov @ 2024-11-01 23:38 UTC (permalink / raw) To: Sabyrzhan Tasbolatov Cc: ryabinin.a.a, elver, arnd, glider, dvyukov, vincenzo.frascino, akpm, kasan-dev, linux-mm, linux-kernel On Fri, Nov 1, 2024 at 7:40 PM Sabyrzhan Tasbolatov <snovitoll@gmail.com> wrote: > > During running KASAN Kunit tests with CONFIG_KASAN enabled, the > following "warning" is reported by kunit framework: > > # kasan_atomics: Test should be marked slow (runtime: 2.604703115s) > > It took 2.6 seconds on my PC (Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz), > apparently, due to multiple atomic checks in kasan_atomics_helper(). > > Let's mark it with KUNIT_CASE_SLOW which reports now as: > > # kasan_atomics.speed: slow > > Signed-off-by: Sabyrzhan Tasbolatov <snovitoll@gmail.com> > --- > mm/kasan/kasan_test_c.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/kasan/kasan_test_c.c b/mm/kasan/kasan_test_c.c > index 3e495c09342e..3946fc89a979 100644 > --- a/mm/kasan/kasan_test_c.c > +++ b/mm/kasan/kasan_test_c.c > @@ -2020,7 +2020,7 @@ static struct kunit_case kasan_kunit_test_cases[] = { > KUNIT_CASE(kasan_strings), > KUNIT_CASE(kasan_bitops_generic), > KUNIT_CASE(kasan_bitops_tags), > - KUNIT_CASE(kasan_atomics), > + KUNIT_CASE_SLOW(kasan_atomics), > KUNIT_CASE(vmalloc_helpers_tags), > KUNIT_CASE(vmalloc_oob), > KUNIT_CASE(vmap_tags), > -- > 2.34.1 > Reviewed-by: Andrey Konovalov <andreyknvl@gmail.com> ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-11-01 23:38 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2024-11-01 18:40 [PATCH 0/2] kasan: few improvements on kunit tests Sabyrzhan Tasbolatov 2024-11-01 18:40 ` [PATCH 1/2] kasan: use EXPORT_SYMBOL_IF_KUNIT to export symbols Sabyrzhan Tasbolatov 2024-11-01 23:38 ` Andrey Konovalov 2024-11-01 18:40 ` [PATCH 2/2] kasan: change kasan_atomics kunit test as KUNIT_CASE_SLOW Sabyrzhan Tasbolatov 2024-11-01 23:38 ` Andrey Konovalov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox