Messages in this thread Patch in this message | | | From | andrey.konovalov@linux ... | Subject | [PATCH mm v5 14/39] kasan, page_alloc: rework kasan_unpoison_pages call site | Date | Thu, 30 Dec 2021 20:12:16 +0100 |
| |
From: Andrey Konovalov <andreyknvl@google.com>
Rework the checks around kasan_unpoison_pages() call in post_alloc_hook().
The logical condition for calling this function is:
- If a software KASAN mode is enabled, we need to mark shadow memory. - Otherwise, HW_TAGS KASAN is enabled, and it only makes sense to set tags if they haven't already been cleared by tag_clear_highpage(), which is indicated by init_tags.
This patch concludes the changes for post_alloc_hook().
Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
---
Changes v3->v4: - Make the confition checks more explicit. - Update patch description. --- mm/page_alloc.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index ddf677c23298..a07f9e9b0abc 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -2434,15 +2434,20 @@ inline void post_alloc_hook(struct page *page, unsigned int order, /* Note that memory is already initialized by the loop above. */ init = false; } - if (kasan_has_integrated_init()) { - if (!init_tags) { - kasan_unpoison_pages(page, order, init); + /* + * If either a software KASAN mode is enabled, or, + * in the case of hardware tag-based KASAN, + * if memory tags have not been cleared via tag_clear_highpage(). + */ + if (IS_ENABLED(CONFIG_KASAN_GENERIC) || + IS_ENABLED(CONFIG_KASAN_SW_TAGS) || + kasan_hw_tags_enabled() && !init_tags) { + /* Mark shadow memory or set memory tags. */ + kasan_unpoison_pages(page, order, init); - /* Note that memory is already initialized by KASAN. */ + /* Note that memory is already initialized by KASAN. */ + if (kasan_has_integrated_init()) init = false; - } - } else { - kasan_unpoison_pages(page, order, init); } /* If memory is still not initialized, do it now. */ if (init) -- 2.25.1
| |