From: Andrey Konovalov <andreyknvl@google.com> To: Andrew Morton <akpm@linux-foundation.org>, Catalin Marinas <catalin.marinas@arm.com>, Vincenzo Frascino <vincenzo.frascino@arm.com> Cc: Will Deacon <will.deacon@arm.com>, Dmitry Vyukov <dvyukov@google.com>, Andrey Ryabinin <aryabinin@virtuozzo.com>, Alexander Potapenko <glider@google.com>, Marco Elver <elver@google.com>, Peter Collingbourne <pcc@google.com>, Evgenii Stepanov <eugenis@google.com>, Branislav Rankov <Branislav.Rankov@arm.com>, Kevin Brodsky <kevin.brodsky@arm.com>, Christoph Hellwig <hch@infradead.org>, kasan-dev@googlegroups.com, linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrey Konovalov <andreyknvl@google.com> Subject: [PATCH mm] kasan: export HW_TAGS symbols for KUnit tests Date: Fri, 12 Feb 2021 21:08:52 +0100 [thread overview] Message-ID: <e7eeb252da408b08f0c81b950a55fb852f92000b.1613155970.git.andreyknvl@google.com> (raw) Currently, building KASAN-KUnit tests as a module fails with: ERROR: modpost: "mte_enable_kernel" [lib/test_kasan.ko] undefined! ERROR: modpost: "mte_set_report_once" [lib/test_kasan.ko] undefined! This change adds KASAN wrappers for mte_enable_kernel() and mte_set_report_once() and only defines and exports them when KASAN-KUnit tests are enabled. The wrappers aren't defined when tests aren't enabled to avoid misuse. The mte_() functions aren't exported directly to avoid having low-level KASAN ifdefs in the arch code. Signed-off-by: Andrey Konovalov <andreyknvl@google.com> --- Changes v1->v2: - Add wrappers instead of exporting MTE symbols directly. - Only define and export wrappers when KASAN-KUnit tests are enabled. --- lib/test_kasan.c | 6 +++--- mm/kasan/hw_tags.c | 16 ++++++++++++++++ mm/kasan/kasan.h | 12 ++++++++++++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/lib/test_kasan.c b/lib/test_kasan.c index 1328c468fdb5..e5647d147b35 100644 --- a/lib/test_kasan.c +++ b/lib/test_kasan.c @@ -53,13 +53,13 @@ static int kasan_test_init(struct kunit *test) } multishot = kasan_save_enable_multi_shot(); - hw_set_tagging_report_once(false); + kasan_set_tagging_report_once(false); return 0; } static void kasan_test_exit(struct kunit *test) { - hw_set_tagging_report_once(true); + kasan_set_tagging_report_once(true); kasan_restore_multi_shot(multishot); } @@ -97,7 +97,7 @@ static void kasan_test_exit(struct kunit *test) READ_ONCE(fail_data.report_found)); \ if (IS_ENABLED(CONFIG_KASAN_HW_TAGS)) { \ if (READ_ONCE(fail_data.report_found)) \ - hw_enable_tagging(); \ + kasan_enable_tagging(); \ migrate_enable(); \ } \ } while (0) diff --git a/mm/kasan/hw_tags.c b/mm/kasan/hw_tags.c index 1dfe4f62a89e..2aad21fda156 100644 --- a/mm/kasan/hw_tags.c +++ b/mm/kasan/hw_tags.c @@ -185,3 +185,19 @@ struct kasan_track *kasan_get_free_track(struct kmem_cache *cache, return &alloc_meta->free_track[0]; } + +#if IS_ENABLED(CONFIG_KASAN_KUNIT_TEST) + +void kasan_set_tagging_report_once(bool state) +{ + hw_set_tagging_report_once(state); +} +EXPORT_SYMBOL_GPL(kasan_set_tagging_report_once); + +void kasan_enable_tagging(void) +{ + hw_enable_tagging(); +} +EXPORT_SYMBOL_GPL(kasan_enable_tagging); + +#endif diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h index cc787ba47e1b..3436c6bf7c0c 100644 --- a/mm/kasan/kasan.h +++ b/mm/kasan/kasan.h @@ -308,6 +308,18 @@ static inline const void *arch_kasan_set_tag(const void *addr, u8 tag) #endif /* CONFIG_KASAN_HW_TAGS */ +#if defined(CONFIG_KASAN_HW_TAGS) && IS_ENABLED(CONFIG_KASAN_KUNIT_TEST) + +void kasan_set_tagging_report_once(bool state); +void kasan_enable_tagging(void); + +#else /* CONFIG_KASAN_HW_TAGS || CONFIG_KASAN_KUNIT_TEST */ + +static inline void kasan_set_tagging_report_once(bool state) { } +static inline void kasan_enable_tagging(void) { } + +#endif /* CONFIG_KASAN_HW_TAGS || CONFIG_KASAN_KUNIT_TEST */ + #ifdef CONFIG_KASAN_SW_TAGS u8 kasan_random_tag(void); #elif defined(CONFIG_KASAN_HW_TAGS) -- 2.30.0.478.g8a0d178c01-goog
WARNING: multiple messages have this Message-ID (diff)
From: Andrey Konovalov <andreyknvl@google.com> To: Andrew Morton <akpm@linux-foundation.org>, Catalin Marinas <catalin.marinas@arm.com>, Vincenzo Frascino <vincenzo.frascino@arm.com> Cc: linux-arm-kernel@lists.infradead.org, Marco Elver <elver@google.com>, Andrey Konovalov <andreyknvl@google.com>, Kevin Brodsky <kevin.brodsky@arm.com>, Will Deacon <will.deacon@arm.com>, Branislav Rankov <Branislav.Rankov@arm.com>, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, Christoph Hellwig <hch@infradead.org>, linux-mm@kvack.org, Alexander Potapenko <glider@google.com>, Evgenii Stepanov <eugenis@google.com>, Andrey Ryabinin <aryabinin@virtuozzo.com>, Peter Collingbourne <pcc@google.com>, Dmitry Vyukov <dvyukov@google.com> Subject: [PATCH mm] kasan: export HW_TAGS symbols for KUnit tests Date: Fri, 12 Feb 2021 21:08:52 +0100 [thread overview] Message-ID: <e7eeb252da408b08f0c81b950a55fb852f92000b.1613155970.git.andreyknvl@google.com> (raw) Currently, building KASAN-KUnit tests as a module fails with: ERROR: modpost: "mte_enable_kernel" [lib/test_kasan.ko] undefined! ERROR: modpost: "mte_set_report_once" [lib/test_kasan.ko] undefined! This change adds KASAN wrappers for mte_enable_kernel() and mte_set_report_once() and only defines and exports them when KASAN-KUnit tests are enabled. The wrappers aren't defined when tests aren't enabled to avoid misuse. The mte_() functions aren't exported directly to avoid having low-level KASAN ifdefs in the arch code. Signed-off-by: Andrey Konovalov <andreyknvl@google.com> --- Changes v1->v2: - Add wrappers instead of exporting MTE symbols directly. - Only define and export wrappers when KASAN-KUnit tests are enabled. --- lib/test_kasan.c | 6 +++--- mm/kasan/hw_tags.c | 16 ++++++++++++++++ mm/kasan/kasan.h | 12 ++++++++++++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/lib/test_kasan.c b/lib/test_kasan.c index 1328c468fdb5..e5647d147b35 100644 --- a/lib/test_kasan.c +++ b/lib/test_kasan.c @@ -53,13 +53,13 @@ static int kasan_test_init(struct kunit *test) } multishot = kasan_save_enable_multi_shot(); - hw_set_tagging_report_once(false); + kasan_set_tagging_report_once(false); return 0; } static void kasan_test_exit(struct kunit *test) { - hw_set_tagging_report_once(true); + kasan_set_tagging_report_once(true); kasan_restore_multi_shot(multishot); } @@ -97,7 +97,7 @@ static void kasan_test_exit(struct kunit *test) READ_ONCE(fail_data.report_found)); \ if (IS_ENABLED(CONFIG_KASAN_HW_TAGS)) { \ if (READ_ONCE(fail_data.report_found)) \ - hw_enable_tagging(); \ + kasan_enable_tagging(); \ migrate_enable(); \ } \ } while (0) diff --git a/mm/kasan/hw_tags.c b/mm/kasan/hw_tags.c index 1dfe4f62a89e..2aad21fda156 100644 --- a/mm/kasan/hw_tags.c +++ b/mm/kasan/hw_tags.c @@ -185,3 +185,19 @@ struct kasan_track *kasan_get_free_track(struct kmem_cache *cache, return &alloc_meta->free_track[0]; } + +#if IS_ENABLED(CONFIG_KASAN_KUNIT_TEST) + +void kasan_set_tagging_report_once(bool state) +{ + hw_set_tagging_report_once(state); +} +EXPORT_SYMBOL_GPL(kasan_set_tagging_report_once); + +void kasan_enable_tagging(void) +{ + hw_enable_tagging(); +} +EXPORT_SYMBOL_GPL(kasan_enable_tagging); + +#endif diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h index cc787ba47e1b..3436c6bf7c0c 100644 --- a/mm/kasan/kasan.h +++ b/mm/kasan/kasan.h @@ -308,6 +308,18 @@ static inline const void *arch_kasan_set_tag(const void *addr, u8 tag) #endif /* CONFIG_KASAN_HW_TAGS */ +#if defined(CONFIG_KASAN_HW_TAGS) && IS_ENABLED(CONFIG_KASAN_KUNIT_TEST) + +void kasan_set_tagging_report_once(bool state); +void kasan_enable_tagging(void); + +#else /* CONFIG_KASAN_HW_TAGS || CONFIG_KASAN_KUNIT_TEST */ + +static inline void kasan_set_tagging_report_once(bool state) { } +static inline void kasan_enable_tagging(void) { } + +#endif /* CONFIG_KASAN_HW_TAGS || CONFIG_KASAN_KUNIT_TEST */ + #ifdef CONFIG_KASAN_SW_TAGS u8 kasan_random_tag(void); #elif defined(CONFIG_KASAN_HW_TAGS) -- 2.30.0.478.g8a0d178c01-goog _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next reply other threads:[~2021-02-12 20:09 UTC|newest] Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-02-12 20:08 Andrey Konovalov [this message] 2021-02-12 20:08 ` [PATCH mm] kasan: export HW_TAGS symbols for KUnit tests Andrey Konovalov 2021-02-12 20:08 ` Andrey Konovalov 2021-02-12 20:16 ` Andrew Morton 2021-02-12 20:16 ` Andrew Morton 2021-02-12 20:21 ` Andrey Konovalov 2021-02-12 20:21 ` Andrey Konovalov 2021-02-12 20:21 ` Andrey Konovalov 2021-02-12 20:54 ` Andrew Morton 2021-02-12 20:54 ` Andrew Morton 2021-02-12 21:01 ` Andrey Konovalov 2021-02-12 21:01 ` Andrey Konovalov 2021-02-12 21:01 ` Andrey Konovalov 2021-02-12 21:08 ` Andrew Morton 2021-02-12 21:08 ` Andrew Morton 2021-02-12 21:10 ` Andrey Konovalov 2021-02-12 21:10 ` Andrey Konovalov 2021-02-12 21:10 ` Andrey Konovalov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=e7eeb252da408b08f0c81b950a55fb852f92000b.1613155970.git.andreyknvl@google.com \ --to=andreyknvl@google.com \ --cc=Branislav.Rankov@arm.com \ --cc=akpm@linux-foundation.org \ --cc=aryabinin@virtuozzo.com \ --cc=catalin.marinas@arm.com \ --cc=dvyukov@google.com \ --cc=elver@google.com \ --cc=eugenis@google.com \ --cc=glider@google.com \ --cc=hch@infradead.org \ --cc=kasan-dev@googlegroups.com \ --cc=kevin.brodsky@arm.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=pcc@google.com \ --cc=vincenzo.frascino@arm.com \ --cc=will.deacon@arm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.