diff options
| author | Andrey Konovalov <[email protected]> | 2022-06-09 18:18:47 +0000 |
|---|---|---|
| committer | akpm <[email protected]> | 2022-07-04 01:08:39 +0000 |
| commit | 6c2f761dad7851d8088b91063ccaea3c970efe78 (patch) | |
| tree | 31c0fc3824144a4bb907b88a8f3824e6d0f79b8c /mm/shrinker_debug.c | |
| parent | mm: introduce clear_highpage_kasan_tagged (diff) | |
| download | kernel-6c2f761dad7851d8088b91063ccaea3c970efe78.tar.gz kernel-6c2f761dad7851d8088b91063ccaea3c970efe78.zip | |
kasan: fix zeroing vmalloc memory with HW_TAGS
HW_TAGS KASAN skips zeroing page_alloc allocations backing vmalloc
mappings via __GFP_SKIP_ZERO. Instead, these pages are zeroed via
kasan_unpoison_vmalloc() by passing the KASAN_VMALLOC_INIT flag.
The problem is that __kasan_unpoison_vmalloc() does not zero pages when
either kasan_vmalloc_enabled() or is_vmalloc_or_module_addr() fail.
Thus:
1. Change __vmalloc_node_range() to only set KASAN_VMALLOC_INIT when
__GFP_SKIP_ZERO is set.
2. Change __kasan_unpoison_vmalloc() to always zero pages when the
KASAN_VMALLOC_INIT flag is set.
3. Add WARN_ON() asserts to check that KASAN_VMALLOC_INIT cannot be set
in other early return paths of __kasan_unpoison_vmalloc().
Also clean up the comment in __kasan_unpoison_vmalloc.
Link: https://lkml.kernel.org/r/4bc503537efdc539ffc3f461c1b70162eea31cf6.1654798516.git.andreyknvl@google.com
Fixes: 23689e91fb22 ("kasan, vmalloc: add vmalloc tagging for HW_TAGS")
Signed-off-by: Andrey Konovalov <[email protected]>
Cc: Marco Elver <[email protected]>
Cc: Alexander Potapenko <[email protected]>
Cc: Dmitry Vyukov <[email protected]>
Cc: Andrey Ryabinin <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Diffstat (limited to 'mm/shrinker_debug.c')
0 files changed, 0 insertions, 0 deletions
