kasan-introduce-kasan_requires_meta.patch removed from -mm tree
The quilt patch titled
Subject: kasan: introduce kasan_requires_meta
has been removed from the -mm tree. Its filename was
kasan-introduce-kasan_requires_meta.patch
This patch was dropped because it was merged into the mm-stable branch of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
------------------------------------------------------
From: Andrey Konovalov <[email protected]>
Subject: kasan: introduce kasan_requires_meta
Date: Mon, 5 Sep 2022 23:05:26 +0200
Add a kasan_requires_meta() helper that indicates whether the enabled KASAN mode requires per-object metadata and use this helper in the common code.
Also hide kasan_init_object_meta() under CONFIG_KASAN_GENERIC ifdef check, as Generic is the only mode that uses per-object metadata.
To allow for a potential future change that makes Generic KASAN support the kasan.stacktrace command-line parameter, let kasan_requires_meta() return kasan_stack_collection_enabled() instead of simply returning true.
---
mm/kasan/common.c | 13 +++++-------- mm/kasan/kasan.h | 33 +++++++++++++++++++++++++++++---- mm/kasan/tags.c | 4 ---- 3 files changed, 34 insertions(+), 16 deletions(-)
mm/kasan/common.c renamed from mm/kasan/common.c~kasan-introduce-kasan_requires_meta +5 -8
@@ -88,13 +88,10 @@ asmlinkage void kasan_unpoison_task_stac }#endif /* CONFIG_KASAN_STACK */ -/* -* Only allow cache merging when stack collection is disabled and no metadata -* is present. -*/ +/* Only allow cache merging when no per-object metadata is present. */ slab_flags_t __kasan_never_merge (void ) { -if (kasan_stack_collection_enabled ()) +if (kasan_requires_meta ())return SLAB_KASAN ;return 0 ; }
@@ -152,7 +149,7 @@ void __kasan_cache_create(struct kmem_ca*/ *flags |=SLAB_KASAN ; -if (!kasan_stack_collection_enabled ()) +if (!kasan_requires_meta ())return ; ok_size = *size;
@@ -220,7 +217,7 @@ void __kasan_cache_create_kmalloc(structsize_t __kasan_metadata_size (struct kmem_cache *cache) { -if (!kasan_stack_collection_enabled ()) +if (!kasan_requires_meta ())return 0 ;return (cache->kasan_info.alloc_meta_offset ? sizeof(struct kasan_alloc_meta) : 0) +
@@ -295,7 +292,7 @@ void * __must_check __kasan_init_slab_ob const void *object) {/* Initialize per-object metadata if it is present. */ -if (kasan_stack_collection_enabled ()) +if (kasan_requires_meta ())kasan_init_object_meta (cache, object);/* Tag is ignored in set_tag() without CONFIG_KASAN_SW/HW_TAGS */
mm/kasan/kasan.h renamed from mm/kasan/kasan.h~kasan-introduce-kasan_requires_meta +29 -4
@@ -43,7 +43,7 @@ static inline bool kasan_sync_fault_poss return kasan_mode == KASAN_MODE_SYNC || kasan_mode == KASAN_MODE_ASYMM; } -#else +#else /* CONFIG_KASAN_HW_TAGS */ static inline bool kasan_stack_collection_enabled (void ) {
@@ -60,7 +60,31 @@ static inline bool kasan_sync_fault_poss return true; } -#endif +#endif /* CONFIG_KASAN_HW_TAGS */ + +#ifdef CONFIG_KASAN_GENERIC + +/* Generic KASAN uses per-object metadata to store stack traces. */ +static inline bool kasan_requires_meta (void ) +{ +/* +* Technically, Generic KASAN always collects stack traces right now. +* However, let's use kasan_stack_collection_enabled() in case the +* kasan.stacktrace command-line argument is changed to affect +* Generic KASAN. +*/ +return kasan_stack_collection_enabled (); +} + +#else /* CONFIG_KASAN_GENERIC */ + +/* Tag-based KASAN modes do not use per-object metadata. */ +static inline bool kasan_requires_meta (void ) +{ +return false; +} + +#endif /* CONFIG_KASAN_GENERIC */ #if defined(CONFIG_KASAN_GENERIC ) || defined(CONFIG_KASAN_SW_TAGS )#define KASAN_GRANULE_SIZE (1UL << KASAN_SHADOW_SCALE_SHIFT)
@@ -272,13 +296,14 @@ void kasan_report_invalid_free(void *objstruct page *kasan_addr_to_page (const void *addr);struct slab *kasan_addr_to_slab (const void *addr); -void kasan_init_object_meta (struct kmem_cache *cache,const void *object); -#ifdef CONFIG_KASAN_GENERIC +void kasan_init_object_meta (struct kmem_cache *cache,const void *object);struct kasan_alloc_meta *kasan_get_alloc_meta (struct kmem_cache *cache,const void *object);struct kasan_free_meta *kasan_get_free_meta (struct kmem_cache *cache,const void *object); +#else +static inline void kasan_init_object_meta (struct kmem_cache *cache,const void *object) { }#endif depot_stack_handle_t kasan_save_stack (gfp_t flags,bool can_alloc);
mm/kasan/tags.c renamed from mm/kasan/tags.c~kasan-introduce-kasan_requires_meta +0 -4
@@ -17,10 +17,6 @@#include "kasan.h" -void kasan_init_object_meta (struct kmem_cache *cache,const void *object) -{ -} -void kasan_save_alloc_info (struct kmem_cache *cache,void *object,gfp_t flags) { }
_
Patches currently in -mm which might be from [email protected] are
kasan-fix-array-bounds-warnings-in-tests.patch