From: Marco Elver <elver@google.com>
To: Andrey Konovalov <andreyknvl@google.com>
Cc: linux-arm-kernel@lists.infradead.org,
Branislav Rankov <Branislav.Rankov@arm.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Kevin Brodsky <kevin.brodsky@arm.com>,
Will Deacon <will.deacon@arm.com>,
linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com,
linux-mm@kvack.org, Alexander Potapenko <glider@google.com>,
Dmitry Vyukov <dvyukov@google.com>,
Andrey Ryabinin <aryabinin@virtuozzo.com>,
Andrew Morton <akpm@linux-foundation.org>,
Vincenzo Frascino <vincenzo.frascino@arm.com>,
Evgenii Stepanov <eugenis@google.com>
Subject: Re: [PATCH v2 10/20] kasan: inline and rename kasan_unpoison_memory
Date: Wed, 11 Nov 2020 18:49:02 +0100 [thread overview]
Message-ID: <20201111174902.GK517454@elver.google.com> (raw)
In-Reply-To: <0a9b63bff116734ab63d99ebd09c244332d71958.1605046662.git.andreyknvl@google.com>
On Tue, Nov 10, 2020 at 11:20PM +0100, Andrey Konovalov wrote:
> Currently kasan_unpoison_memory() is used as both an external annotation
> and as an internal memory poisoning helper. Rename external annotation to
> kasan_unpoison_data() and inline the internal helper for hardware
> tag-based mode to avoid undeeded function calls.
I don't understand why this needs to be renamed again. The users of
kasan_unpoison_memory() outweigh those of kasan_unpoison_slab(), of
which there seems to be only 1!
So can't we just get rid of kasan_unpoison_slab() and just open-code it
in mm/mempool.c:kasan_unpoison_element()? That function is already
kasan-prefixed, so we can even place a small comment there (which would
also be an improvement over current interface, since
kasan_unpoison_slab() is not documented and its existence not quite
justified).
> There's the external annotation kasan_unpoison_slab() that is currently
> defined as static inline and uses kasan_unpoison_memory(). With this
> change it's turned into a function call. Overall, this results in the
> same number of calls for hardware tag-based mode as
> kasan_unpoison_memory() is now inlined.
>
> Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
> Link: https://linux-review.googlesource.com/id/Ia7c8b659f79209935cbaab3913bf7f082cc43a0e
> ---
> include/linux/kasan.h | 16 ++++++----------
> kernel/fork.c | 2 +-
> mm/kasan/common.c | 10 ++++++++++
> mm/kasan/hw_tags.c | 6 ------
> mm/kasan/kasan.h | 7 +++++++
> mm/slab_common.c | 2 +-
> 6 files changed, 25 insertions(+), 18 deletions(-)
>
> diff --git a/include/linux/kasan.h b/include/linux/kasan.h
> index 53c8e8b12fbc..f1a5042ae4fc 100644
> --- a/include/linux/kasan.h
> +++ b/include/linux/kasan.h
> @@ -74,14 +74,15 @@ static inline void kasan_disable_current(void) {}
>
> #ifdef CONFIG_KASAN
>
> -void kasan_unpoison_memory(const void *address, size_t size);
> -
> void kasan_alloc_pages(struct page *page, unsigned int order);
> void kasan_free_pages(struct page *page, unsigned int order);
>
> void kasan_cache_create(struct kmem_cache *cache, unsigned int *size,
> slab_flags_t *flags);
>
> +void kasan_unpoison_data(const void *address, size_t size);
> +void kasan_unpoison_slab(const void *ptr);
> +
> void kasan_poison_slab(struct page *page);
> void kasan_unpoison_object_data(struct kmem_cache *cache, void *object);
> void kasan_poison_object_data(struct kmem_cache *cache, void *object);
> @@ -106,11 +107,6 @@ struct kasan_cache {
> int free_meta_offset;
> };
>
> -size_t __ksize(const void *);
> -static inline void kasan_unpoison_slab(const void *ptr)
> -{
> - kasan_unpoison_memory(ptr, __ksize(ptr));
> -}
> size_t kasan_metadata_size(struct kmem_cache *cache);
>
> bool kasan_save_enable_multi_shot(void);
> @@ -118,8 +114,6 @@ void kasan_restore_multi_shot(bool enabled);
>
> #else /* CONFIG_KASAN */
>
> -static inline void kasan_unpoison_memory(const void *address, size_t size) {}
> -
> static inline void kasan_alloc_pages(struct page *page, unsigned int order) {}
> static inline void kasan_free_pages(struct page *page, unsigned int order) {}
>
> @@ -127,6 +121,9 @@ static inline void kasan_cache_create(struct kmem_cache *cache,
> unsigned int *size,
> slab_flags_t *flags) {}
>
> +static inline void kasan_unpoison_data(const void *address, size_t size) { }
> +static inline void kasan_unpoison_slab(const void *ptr) { }
> +
> static inline void kasan_poison_slab(struct page *page) {}
> static inline void kasan_unpoison_object_data(struct kmem_cache *cache,
> void *object) {}
> @@ -166,7 +163,6 @@ static inline bool kasan_slab_free(struct kmem_cache *s, void *object,
> return false;
> }
>
> -static inline void kasan_unpoison_slab(const void *ptr) { }
> static inline size_t kasan_metadata_size(struct kmem_cache *cache) { return 0; }
>
> #endif /* CONFIG_KASAN */
> diff --git a/kernel/fork.c b/kernel/fork.c
> index 1c905e4290ab..883898487b3f 100644
> --- a/kernel/fork.c
> +++ b/kernel/fork.c
> @@ -226,7 +226,7 @@ static unsigned long *alloc_thread_stack_node(struct task_struct *tsk, int node)
> continue;
>
> /* Mark stack accessible for KASAN. */
> - kasan_unpoison_memory(s->addr, THREAD_SIZE);
> + kasan_unpoison_data(s->addr, THREAD_SIZE);
... this change would become unnecessary.
> /* Clear stale pointers from reused stack. */
> memset(s->addr, 0, THREAD_SIZE);
> diff --git a/mm/kasan/common.c b/mm/kasan/common.c
> index a266b90636a1..4598c1364f19 100644
> --- a/mm/kasan/common.c
> +++ b/mm/kasan/common.c
> @@ -184,6 +184,16 @@ struct kasan_free_meta *kasan_get_free_meta(struct kmem_cache *cache,
> return kasan_reset_tag(object) + cache->kasan_info.free_meta_offset;
> }
>
> +void kasan_unpoison_data(const void *address, size_t size)
> +{
> + kasan_unpoison_memory(address, size);
> +}
> +
> +void kasan_unpoison_slab(const void *ptr)
> +{
> + kasan_unpoison_memory(ptr, __ksize(ptr));
> +}
> +
This function is so simple, I think just open-coding
kasan_unpoison_memory(ptr, __ksize(ptr))
wherever required is much simpler, also bearing in mind the changes that
are coming to the rest of this series.
> void kasan_poison_slab(struct page *page)
> {
> unsigned long i;
> diff --git a/mm/kasan/hw_tags.c b/mm/kasan/hw_tags.c
> index 0303e49904b4..838b29e44e32 100644
> --- a/mm/kasan/hw_tags.c
> +++ b/mm/kasan/hw_tags.c
> @@ -30,12 +30,6 @@ void kasan_init_hw_tags(void)
> pr_info("KernelAddressSanitizer initialized\n");
> }
>
> -void kasan_unpoison_memory(const void *address, size_t size)
> -{
> - hw_set_mem_tag_range(kasan_reset_tag(address),
> - round_up(size, KASAN_GRANULE_SIZE), get_tag(address));
> -}
> -
> void kasan_set_free_info(struct kmem_cache *cache,
> void *object, u8 tag)
> {
> diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h
> index ab7314418604..2d3c99125996 100644
> --- a/mm/kasan/kasan.h
> +++ b/mm/kasan/kasan.h
> @@ -283,6 +283,12 @@ static inline void kasan_poison_memory(const void *address, size_t size, u8 valu
> round_up(size, KASAN_GRANULE_SIZE), value);
> }
>
> +static inline void kasan_unpoison_memory(const void *address, size_t size)
> +{
> + hw_set_mem_tag_range(kasan_reset_tag(address),
> + round_up(size, KASAN_GRANULE_SIZE), get_tag(address));
> +}
> +
> static inline bool check_invalid_free(void *addr)
> {
> u8 ptr_tag = get_tag(addr);
> @@ -295,6 +301,7 @@ static inline bool check_invalid_free(void *addr)
> #else /* CONFIG_KASAN_HW_TAGS */
>
> void kasan_poison_memory(const void *address, size_t size, u8 value);
> +void kasan_unpoison_memory(const void *address, size_t size);
> bool check_invalid_free(void *addr);
>
> #endif /* CONFIG_KASAN_HW_TAGS */
> diff --git a/mm/slab_common.c b/mm/slab_common.c
> index 53d0f8bb57ea..f1b0c4a22f08 100644
> --- a/mm/slab_common.c
> +++ b/mm/slab_common.c
> @@ -1176,7 +1176,7 @@ size_t ksize(const void *objp)
> * We assume that ksize callers could use whole allocated area,
> * so we need to unpoison this area.
> */
> - kasan_unpoison_memory(objp, size);
> + kasan_unpoison_data(objp, size);
... this change would become unnecessary.
Thanks,
-- Marco
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Marco Elver <elver@google.com>
To: Andrey Konovalov <andreyknvl@google.com>
Cc: Dmitry Vyukov <dvyukov@google.com>,
Alexander Potapenko <glider@google.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>,
Vincenzo Frascino <vincenzo.frascino@arm.com>,
Evgenii Stepanov <eugenis@google.com>,
Andrey Ryabinin <aryabinin@virtuozzo.com>,
Branislav Rankov <Branislav.Rankov@arm.com>,
Kevin Brodsky <kevin.brodsky@arm.com>,
Andrew Morton <akpm@linux-foundation.org>,
kasan-dev@googlegroups.com, linux-arm-kernel@lists.infradead.org,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 10/20] kasan: inline and rename kasan_unpoison_memory
Date: Wed, 11 Nov 2020 18:49:02 +0100 [thread overview]
Message-ID: <20201111174902.GK517454@elver.google.com> (raw)
In-Reply-To: <0a9b63bff116734ab63d99ebd09c244332d71958.1605046662.git.andreyknvl@google.com>
On Tue, Nov 10, 2020 at 11:20PM +0100, Andrey Konovalov wrote:
> Currently kasan_unpoison_memory() is used as both an external annotation
> and as an internal memory poisoning helper. Rename external annotation to
> kasan_unpoison_data() and inline the internal helper for hardware
> tag-based mode to avoid undeeded function calls.
I don't understand why this needs to be renamed again. The users of
kasan_unpoison_memory() outweigh those of kasan_unpoison_slab(), of
which there seems to be only 1!
So can't we just get rid of kasan_unpoison_slab() and just open-code it
in mm/mempool.c:kasan_unpoison_element()? That function is already
kasan-prefixed, so we can even place a small comment there (which would
also be an improvement over current interface, since
kasan_unpoison_slab() is not documented and its existence not quite
justified).
> There's the external annotation kasan_unpoison_slab() that is currently
> defined as static inline and uses kasan_unpoison_memory(). With this
> change it's turned into a function call. Overall, this results in the
> same number of calls for hardware tag-based mode as
> kasan_unpoison_memory() is now inlined.
>
> Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
> Link: https://linux-review.googlesource.com/id/Ia7c8b659f79209935cbaab3913bf7f082cc43a0e
> ---
> include/linux/kasan.h | 16 ++++++----------
> kernel/fork.c | 2 +-
> mm/kasan/common.c | 10 ++++++++++
> mm/kasan/hw_tags.c | 6 ------
> mm/kasan/kasan.h | 7 +++++++
> mm/slab_common.c | 2 +-
> 6 files changed, 25 insertions(+), 18 deletions(-)
>
> diff --git a/include/linux/kasan.h b/include/linux/kasan.h
> index 53c8e8b12fbc..f1a5042ae4fc 100644
> --- a/include/linux/kasan.h
> +++ b/include/linux/kasan.h
> @@ -74,14 +74,15 @@ static inline void kasan_disable_current(void) {}
>
> #ifdef CONFIG_KASAN
>
> -void kasan_unpoison_memory(const void *address, size_t size);
> -
> void kasan_alloc_pages(struct page *page, unsigned int order);
> void kasan_free_pages(struct page *page, unsigned int order);
>
> void kasan_cache_create(struct kmem_cache *cache, unsigned int *size,
> slab_flags_t *flags);
>
> +void kasan_unpoison_data(const void *address, size_t size);
> +void kasan_unpoison_slab(const void *ptr);
> +
> void kasan_poison_slab(struct page *page);
> void kasan_unpoison_object_data(struct kmem_cache *cache, void *object);
> void kasan_poison_object_data(struct kmem_cache *cache, void *object);
> @@ -106,11 +107,6 @@ struct kasan_cache {
> int free_meta_offset;
> };
>
> -size_t __ksize(const void *);
> -static inline void kasan_unpoison_slab(const void *ptr)
> -{
> - kasan_unpoison_memory(ptr, __ksize(ptr));
> -}
> size_t kasan_metadata_size(struct kmem_cache *cache);
>
> bool kasan_save_enable_multi_shot(void);
> @@ -118,8 +114,6 @@ void kasan_restore_multi_shot(bool enabled);
>
> #else /* CONFIG_KASAN */
>
> -static inline void kasan_unpoison_memory(const void *address, size_t size) {}
> -
> static inline void kasan_alloc_pages(struct page *page, unsigned int order) {}
> static inline void kasan_free_pages(struct page *page, unsigned int order) {}
>
> @@ -127,6 +121,9 @@ static inline void kasan_cache_create(struct kmem_cache *cache,
> unsigned int *size,
> slab_flags_t *flags) {}
>
> +static inline void kasan_unpoison_data(const void *address, size_t size) { }
> +static inline void kasan_unpoison_slab(const void *ptr) { }
> +
> static inline void kasan_poison_slab(struct page *page) {}
> static inline void kasan_unpoison_object_data(struct kmem_cache *cache,
> void *object) {}
> @@ -166,7 +163,6 @@ static inline bool kasan_slab_free(struct kmem_cache *s, void *object,
> return false;
> }
>
> -static inline void kasan_unpoison_slab(const void *ptr) { }
> static inline size_t kasan_metadata_size(struct kmem_cache *cache) { return 0; }
>
> #endif /* CONFIG_KASAN */
> diff --git a/kernel/fork.c b/kernel/fork.c
> index 1c905e4290ab..883898487b3f 100644
> --- a/kernel/fork.c
> +++ b/kernel/fork.c
> @@ -226,7 +226,7 @@ static unsigned long *alloc_thread_stack_node(struct task_struct *tsk, int node)
> continue;
>
> /* Mark stack accessible for KASAN. */
> - kasan_unpoison_memory(s->addr, THREAD_SIZE);
> + kasan_unpoison_data(s->addr, THREAD_SIZE);
... this change would become unnecessary.
> /* Clear stale pointers from reused stack. */
> memset(s->addr, 0, THREAD_SIZE);
> diff --git a/mm/kasan/common.c b/mm/kasan/common.c
> index a266b90636a1..4598c1364f19 100644
> --- a/mm/kasan/common.c
> +++ b/mm/kasan/common.c
> @@ -184,6 +184,16 @@ struct kasan_free_meta *kasan_get_free_meta(struct kmem_cache *cache,
> return kasan_reset_tag(object) + cache->kasan_info.free_meta_offset;
> }
>
> +void kasan_unpoison_data(const void *address, size_t size)
> +{
> + kasan_unpoison_memory(address, size);
> +}
> +
> +void kasan_unpoison_slab(const void *ptr)
> +{
> + kasan_unpoison_memory(ptr, __ksize(ptr));
> +}
> +
This function is so simple, I think just open-coding
kasan_unpoison_memory(ptr, __ksize(ptr))
wherever required is much simpler, also bearing in mind the changes that
are coming to the rest of this series.
> void kasan_poison_slab(struct page *page)
> {
> unsigned long i;
> diff --git a/mm/kasan/hw_tags.c b/mm/kasan/hw_tags.c
> index 0303e49904b4..838b29e44e32 100644
> --- a/mm/kasan/hw_tags.c
> +++ b/mm/kasan/hw_tags.c
> @@ -30,12 +30,6 @@ void kasan_init_hw_tags(void)
> pr_info("KernelAddressSanitizer initialized\n");
> }
>
> -void kasan_unpoison_memory(const void *address, size_t size)
> -{
> - hw_set_mem_tag_range(kasan_reset_tag(address),
> - round_up(size, KASAN_GRANULE_SIZE), get_tag(address));
> -}
> -
> void kasan_set_free_info(struct kmem_cache *cache,
> void *object, u8 tag)
> {
> diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h
> index ab7314418604..2d3c99125996 100644
> --- a/mm/kasan/kasan.h
> +++ b/mm/kasan/kasan.h
> @@ -283,6 +283,12 @@ static inline void kasan_poison_memory(const void *address, size_t size, u8 valu
> round_up(size, KASAN_GRANULE_SIZE), value);
> }
>
> +static inline void kasan_unpoison_memory(const void *address, size_t size)
> +{
> + hw_set_mem_tag_range(kasan_reset_tag(address),
> + round_up(size, KASAN_GRANULE_SIZE), get_tag(address));
> +}
> +
> static inline bool check_invalid_free(void *addr)
> {
> u8 ptr_tag = get_tag(addr);
> @@ -295,6 +301,7 @@ static inline bool check_invalid_free(void *addr)
> #else /* CONFIG_KASAN_HW_TAGS */
>
> void kasan_poison_memory(const void *address, size_t size, u8 value);
> +void kasan_unpoison_memory(const void *address, size_t size);
> bool check_invalid_free(void *addr);
>
> #endif /* CONFIG_KASAN_HW_TAGS */
> diff --git a/mm/slab_common.c b/mm/slab_common.c
> index 53d0f8bb57ea..f1b0c4a22f08 100644
> --- a/mm/slab_common.c
> +++ b/mm/slab_common.c
> @@ -1176,7 +1176,7 @@ size_t ksize(const void *objp)
> * We assume that ksize callers could use whole allocated area,
> * so we need to unpoison this area.
> */
> - kasan_unpoison_memory(objp, size);
> + kasan_unpoison_data(objp, size);
... this change would become unnecessary.
Thanks,
-- Marco
next prev parent reply other threads:[~2020-11-11 17:49 UTC|newest]
Thread overview: 128+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-10 22:20 [PATCH v2 00/20] kasan: boot parameters for hardware tag-based mode Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-10 22:20 ` [PATCH v2 01/20] kasan: simplify quarantine_put call site Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 16:08 ` Marco Elver
2020-11-11 16:08 ` Marco Elver
2020-11-10 22:20 ` [PATCH v2 02/20] kasan: rename get_alloc/free_info Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 16:09 ` Marco Elver
2020-11-11 16:09 ` Marco Elver
2020-11-10 22:20 ` [PATCH v2 03/20] kasan: introduce set_alloc_info Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 16:10 ` Marco Elver
2020-11-11 16:10 ` Marco Elver
2020-11-10 22:20 ` [PATCH v2 04/20] kasan, arm64: unpoison stack only with CONFIG_KASAN_STACK Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 16:13 ` Marco Elver
2020-11-11 16:13 ` Marco Elver
2020-11-12 9:51 ` Catalin Marinas
2020-11-12 9:51 ` Catalin Marinas
2020-11-12 19:38 ` Andrey Konovalov
2020-11-12 19:38 ` Andrey Konovalov
2020-11-10 22:20 ` [PATCH v2 05/20] kasan: allow VMAP_STACK for HW_TAGS mode Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 16:20 ` Marco Elver
2020-11-11 16:20 ` Marco Elver
2020-11-12 0:24 ` Andrey Konovalov
2020-11-12 0:24 ` Andrey Konovalov
2020-11-12 10:31 ` Catalin Marinas
2020-11-12 10:31 ` Catalin Marinas
2020-11-10 22:20 ` [PATCH v2 06/20] kasan: remove __kasan_unpoison_stack Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 16:42 ` Marco Elver
2020-11-11 16:42 ` Marco Elver
2020-11-10 22:20 ` [PATCH v2 07/20] kasan: inline kasan_reset_tag for tag-based modes Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 16:54 ` Marco Elver
2020-11-11 16:54 ` Marco Elver
2020-11-10 22:20 ` [PATCH v2 08/20] kasan: inline random_tag for HW_TAGS Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 17:02 ` Marco Elver
2020-11-11 17:02 ` Marco Elver
2020-11-12 0:21 ` Andrey Konovalov
2020-11-12 0:21 ` Andrey Konovalov
2020-11-10 22:20 ` [PATCH v2 09/20] kasan: inline kasan_poison_memory and check_invalid_free Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 17:50 ` Marco Elver
2020-11-11 17:50 ` Marco Elver
2020-11-10 22:20 ` [PATCH v2 10/20] kasan: inline and rename kasan_unpoison_memory Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 17:49 ` Marco Elver [this message]
2020-11-11 17:49 ` Marco Elver
2020-11-12 19:45 ` Andrey Konovalov
2020-11-12 19:45 ` Andrey Konovalov
2020-11-12 19:52 ` Marco Elver
2020-11-12 19:52 ` Marco Elver
2020-11-12 20:54 ` Andrey Konovalov
2020-11-12 20:54 ` Andrey Konovalov
2020-11-12 22:20 ` Marco Elver
2020-11-12 22:20 ` Marco Elver
2020-11-10 22:20 ` [PATCH v2 11/20] kasan: add and integrate kasan boot parameters Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 18:29 ` Marco Elver
2020-11-11 18:29 ` Marco Elver
2020-11-12 19:51 ` Andrey Konovalov
2020-11-12 19:51 ` Andrey Konovalov
2020-11-12 11:35 ` Catalin Marinas
2020-11-12 11:35 ` Catalin Marinas
2020-11-12 11:53 ` Marco Elver
2020-11-12 11:53 ` Marco Elver
2020-11-12 12:54 ` Catalin Marinas
2020-11-12 12:54 ` Catalin Marinas
2020-11-12 19:52 ` Andrey Konovalov
2020-11-12 19:52 ` Andrey Konovalov
2020-11-13 17:52 ` Marco Elver
2020-11-13 17:52 ` Marco Elver
2020-11-13 17:55 ` Marco Elver
2020-11-13 17:55 ` Marco Elver
2020-11-10 22:20 ` [PATCH v2 12/20] kasan, mm: check kasan_enabled in annotations Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 14:48 ` Marco Elver
2020-11-11 14:48 ` Marco Elver
2020-11-12 0:36 ` Andrey Konovalov
2020-11-12 0:36 ` Andrey Konovalov
2020-11-10 22:20 ` [PATCH v2 13/20] kasan: simplify kasan_poison_kfree Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 18:42 ` Marco Elver
2020-11-11 18:42 ` Marco Elver
2020-11-10 22:20 ` [PATCH v2 14/20] kasan, mm: rename kasan_poison_kfree Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 18:53 ` Marco Elver
2020-11-11 18:53 ` Marco Elver
2020-11-12 1:05 ` Andrey Konovalov
2020-11-12 1:05 ` Andrey Konovalov
2020-11-10 22:20 ` [PATCH v2 15/20] kasan: don't round_up too much Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 19:08 ` Marco Elver
2020-11-11 19:08 ` Marco Elver
2020-11-10 22:20 ` [PATCH v2 16/20] kasan: simplify assign_tag and set_tag calls Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 19:17 ` Marco Elver
2020-11-11 19:17 ` Marco Elver
2020-11-10 22:20 ` [PATCH v2 17/20] kasan: clarify comment in __kasan_kfree_large Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 19:18 ` Marco Elver
2020-11-11 19:18 ` Marco Elver
2020-11-10 22:20 ` [PATCH v2 18/20] kasan: clean up metadata allocation and usage Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 23:06 ` Marco Elver
2020-11-11 23:06 ` Marco Elver
2020-11-12 20:11 ` Andrey Konovalov
2020-11-12 20:11 ` Andrey Konovalov
2020-11-10 22:20 ` [PATCH v2 19/20] kasan, mm: allow cache merging with no metadata Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 15:13 ` Marco Elver
2020-11-11 15:13 ` Marco Elver
2020-11-12 23:00 ` Andrey Konovalov
2020-11-12 23:00 ` Andrey Konovalov
2020-11-11 23:27 ` Marco Elver
2020-11-11 23:27 ` Marco Elver
2020-11-10 22:20 ` [PATCH v2 20/20] kasan: update documentation Andrey Konovalov
2020-11-10 22:20 ` Andrey Konovalov
2020-11-11 16:03 ` Marco Elver
2020-11-11 16:03 ` Marco Elver
2020-11-12 0:51 ` Andrey Konovalov
2020-11-12 0:51 ` Andrey Konovalov
2020-11-10 22:24 ` [PATCH v2 00/20] kasan: boot parameters for hardware tag-based mode Andrey Konovalov
2020-11-10 22:24 ` 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=20201111174902.GK517454@elver.google.com \
--to=elver@google.com \
--cc=Branislav.Rankov@arm.com \
--cc=akpm@linux-foundation.org \
--cc=andreyknvl@google.com \
--cc=aryabinin@virtuozzo.com \
--cc=catalin.marinas@arm.com \
--cc=dvyukov@google.com \
--cc=eugenis@google.com \
--cc=glider@google.com \
--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=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: link
Be 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.