From: Alexander Potapenko <glider@google.com>
To: Andrey Konovalov <andreyknvl@google.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>,
Vincenzo Frascino <vincenzo.frascino@arm.com>,
Dmitry Vyukov <dvyukov@google.com>,
Andrey Ryabinin <aryabinin@virtuozzo.com>,
Marco Elver <elver@google.com>,
Evgenii Stepanov <eugenis@google.com>,
Branislav Rankov <Branislav.Rankov@arm.com>,
Kevin Brodsky <kevin.brodsky@arm.com>,
Andrew Morton <akpm@linux-foundation.org>,
kasan-dev <kasan-dev@googlegroups.com>,
Linux ARM <linux-arm-kernel@lists.infradead.org>,
Linux Memory Management List <linux-mm@kvack.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v9 38/44] kasan, arm64: expand CONFIG_KASAN checks
Date: Wed, 11 Nov 2020 17:22:41 +0100 [thread overview]
Message-ID: <CAG_fn=X_Suw5LALHm9f9s=ZgNSVZgHAjsghL5MLBPZ4EK7ghWA@mail.gmail.com> (raw)
In-Reply-To: <0fd556cf79c3eb44f3c22a63b9ad70d07d8e1045.1605046192.git.andreyknvl@google.com>
On Tue, Nov 10, 2020 at 11:12 PM Andrey Konovalov <andreyknvl@google.com> wrote:
>
> Some #ifdef CONFIG_KASAN checks are only relevant for software KASAN
> modes (either related to shadow memory or compiler instrumentation).
> Expand those into CONFIG_KASAN_GENERIC || CONFIG_KASAN_SW_TAGS.
>
> Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Reviewed-by: Alexander Potapenko <glider@google.com>
> ---
> Change-Id: I91e661e2c1627783cb845d877c6371dfc8779505
> ---
> arch/arm64/Kconfig | 2 +-
> arch/arm64/Makefile | 2 +-
> arch/arm64/include/asm/assembler.h | 2 +-
> arch/arm64/include/asm/memory.h | 2 +-
> arch/arm64/include/asm/string.h | 5 +++--
> arch/arm64/kernel/head.S | 2 +-
> arch/arm64/kernel/image-vars.h | 2 +-
> arch/arm64/kernel/kaslr.c | 3 ++-
> arch/arm64/kernel/module.c | 6 ++++--
> arch/arm64/mm/ptdump.c | 6 +++---
> include/linux/kasan-checks.h | 2 +-
> include/linux/kasan.h | 7 ++++---
> include/linux/moduleloader.h | 3 ++-
> include/linux/string.h | 2 +-
> mm/ptdump.c | 13 ++++++++-----
> scripts/Makefile.lib | 2 ++
> 16 files changed, 36 insertions(+), 25 deletions(-)
>
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index c84a0e6b4650..456741645f01 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -330,7 +330,7 @@ config BROKEN_GAS_INST
>
> config KASAN_SHADOW_OFFSET
> hex
> - depends on KASAN
> + depends on KASAN_GENERIC || KASAN_SW_TAGS
> default 0xdfffa00000000000 if (ARM64_VA_BITS_48 || ARM64_VA_BITS_52) && !KASAN_SW_TAGS
> default 0xdfffd00000000000 if ARM64_VA_BITS_47 && !KASAN_SW_TAGS
> default 0xdffffe8000000000 if ARM64_VA_BITS_42 && !KASAN_SW_TAGS
> diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
> index 50ad9cbccb51..0b31a3f06f15 100644
> --- a/arch/arm64/Makefile
> +++ b/arch/arm64/Makefile
> @@ -141,7 +141,7 @@ head-y := arch/arm64/kernel/head.o
>
> ifeq ($(CONFIG_KASAN_SW_TAGS), y)
> KASAN_SHADOW_SCALE_SHIFT := 4
> -else
> +else ifeq ($(CONFIG_KASAN_GENERIC), y)
> KASAN_SHADOW_SCALE_SHIFT := 3
> endif
>
> diff --git a/arch/arm64/include/asm/assembler.h b/arch/arm64/include/asm/assembler.h
> index ddbe6bf00e33..bf125c591116 100644
> --- a/arch/arm64/include/asm/assembler.h
> +++ b/arch/arm64/include/asm/assembler.h
> @@ -473,7 +473,7 @@ USER(\label, ic ivau, \tmp2) // invalidate I line PoU
> #define NOKPROBE(x)
> #endif
>
> -#ifdef CONFIG_KASAN
> +#if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)
> #define EXPORT_SYMBOL_NOKASAN(name)
> #else
> #define EXPORT_SYMBOL_NOKASAN(name) EXPORT_SYMBOL(name)
> diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h
> index 419bbace29d5..656aaddb7014 100644
> --- a/arch/arm64/include/asm/memory.h
> +++ b/arch/arm64/include/asm/memory.h
> @@ -72,7 +72,7 @@
> * address space for the shadow region respectively. They can bloat the stack
> * significantly, so double the (minimum) stack size when they are in use.
> */
> -#ifdef CONFIG_KASAN
> +#if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)
> #define KASAN_SHADOW_OFFSET _AC(CONFIG_KASAN_SHADOW_OFFSET, UL)
> #define KASAN_SHADOW_END ((UL(1) << (64 - KASAN_SHADOW_SCALE_SHIFT)) \
> + KASAN_SHADOW_OFFSET)
> diff --git a/arch/arm64/include/asm/string.h b/arch/arm64/include/asm/string.h
> index b31e8e87a0db..3a3264ff47b9 100644
> --- a/arch/arm64/include/asm/string.h
> +++ b/arch/arm64/include/asm/string.h
> @@ -5,7 +5,7 @@
> #ifndef __ASM_STRING_H
> #define __ASM_STRING_H
>
> -#ifndef CONFIG_KASAN
> +#if !(defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS))
> #define __HAVE_ARCH_STRRCHR
> extern char *strrchr(const char *, int c);
>
> @@ -48,7 +48,8 @@ extern void *__memset(void *, int, __kernel_size_t);
> void memcpy_flushcache(void *dst, const void *src, size_t cnt);
> #endif
>
> -#if defined(CONFIG_KASAN) && !defined(__SANITIZE_ADDRESS__)
> +#if (defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)) && \
> + !defined(__SANITIZE_ADDRESS__)
>
> /*
> * For files that are not instrumented (e.g. mm/slub.c) we
> diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S
> index d8d9caf02834..fdcb99d7ba23 100644
> --- a/arch/arm64/kernel/head.S
> +++ b/arch/arm64/kernel/head.S
> @@ -448,7 +448,7 @@ SYM_FUNC_START_LOCAL(__primary_switched)
> bl __pi_memset
> dsb ishst // Make zero page visible to PTW
>
> -#ifdef CONFIG_KASAN
> +#if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)
> bl kasan_early_init
> #endif
> #ifdef CONFIG_RANDOMIZE_BASE
> diff --git a/arch/arm64/kernel/image-vars.h b/arch/arm64/kernel/image-vars.h
> index c615b285ff5b..4282edd2fe81 100644
> --- a/arch/arm64/kernel/image-vars.h
> +++ b/arch/arm64/kernel/image-vars.h
> @@ -37,7 +37,7 @@ __efistub_strncmp = __pi_strncmp;
> __efistub_strrchr = __pi_strrchr;
> __efistub___clean_dcache_area_poc = __pi___clean_dcache_area_poc;
>
> -#ifdef CONFIG_KASAN
> +#if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)
> __efistub___memcpy = __pi_memcpy;
> __efistub___memmove = __pi_memmove;
> __efistub___memset = __pi_memset;
> diff --git a/arch/arm64/kernel/kaslr.c b/arch/arm64/kernel/kaslr.c
> index b181e0544b79..e8e17e91aa02 100644
> --- a/arch/arm64/kernel/kaslr.c
> +++ b/arch/arm64/kernel/kaslr.c
> @@ -151,7 +151,8 @@ u64 __init kaslr_early_init(u64 dt_phys)
> /* use the top 16 bits to randomize the linear region */
> memstart_offset_seed = seed >> 48;
>
> - if (IS_ENABLED(CONFIG_KASAN))
> + if (IS_ENABLED(CONFIG_KASAN_GENERIC) ||
> + IS_ENABLED(CONFIG_KASAN_SW_TAGS))
> /*
> * KASAN does not expect the module region to intersect the
> * vmalloc region, since shadow memory is allocated for each
> diff --git a/arch/arm64/kernel/module.c b/arch/arm64/kernel/module.c
> index 2a1ad95d9b2c..fe21e0f06492 100644
> --- a/arch/arm64/kernel/module.c
> +++ b/arch/arm64/kernel/module.c
> @@ -30,7 +30,8 @@ void *module_alloc(unsigned long size)
> if (IS_ENABLED(CONFIG_ARM64_MODULE_PLTS))
> gfp_mask |= __GFP_NOWARN;
>
> - if (IS_ENABLED(CONFIG_KASAN))
> + if (IS_ENABLED(CONFIG_KASAN_GENERIC) ||
> + IS_ENABLED(CONFIG_KASAN_SW_TAGS))
> /* don't exceed the static module region - see below */
> module_alloc_end = MODULES_END;
>
> @@ -39,7 +40,8 @@ void *module_alloc(unsigned long size)
> NUMA_NO_NODE, __builtin_return_address(0));
>
> if (!p && IS_ENABLED(CONFIG_ARM64_MODULE_PLTS) &&
> - !IS_ENABLED(CONFIG_KASAN))
> + !IS_ENABLED(CONFIG_KASAN_GENERIC) &&
> + !IS_ENABLED(CONFIG_KASAN_SW_TAGS))
> /*
> * KASAN can only deal with module allocations being served
> * from the reserved module region, since the remainder of
> diff --git a/arch/arm64/mm/ptdump.c b/arch/arm64/mm/ptdump.c
> index 807dc634bbd2..04137a8f3d2d 100644
> --- a/arch/arm64/mm/ptdump.c
> +++ b/arch/arm64/mm/ptdump.c
> @@ -29,7 +29,7 @@
> enum address_markers_idx {
> PAGE_OFFSET_NR = 0,
> PAGE_END_NR,
> -#ifdef CONFIG_KASAN
> +#if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)
> KASAN_START_NR,
> #endif
> };
> @@ -37,7 +37,7 @@ enum address_markers_idx {
> static struct addr_marker address_markers[] = {
> { PAGE_OFFSET, "Linear Mapping start" },
> { 0 /* PAGE_END */, "Linear Mapping end" },
> -#ifdef CONFIG_KASAN
> +#if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)
> { 0 /* KASAN_SHADOW_START */, "Kasan shadow start" },
> { KASAN_SHADOW_END, "Kasan shadow end" },
> #endif
> @@ -383,7 +383,7 @@ void ptdump_check_wx(void)
> static int ptdump_init(void)
> {
> address_markers[PAGE_END_NR].start_address = PAGE_END;
> -#ifdef CONFIG_KASAN
> +#if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)
> address_markers[KASAN_START_NR].start_address = KASAN_SHADOW_START;
> #endif
> ptdump_initialize();
> diff --git a/include/linux/kasan-checks.h b/include/linux/kasan-checks.h
> index ac6aba632f2d..ca5e89fb10d3 100644
> --- a/include/linux/kasan-checks.h
> +++ b/include/linux/kasan-checks.h
> @@ -9,7 +9,7 @@
> * even in compilation units that selectively disable KASAN, but must use KASAN
> * to validate access to an address. Never use these in header files!
> */
> -#ifdef CONFIG_KASAN
> +#if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)
> bool __kasan_check_read(const volatile void *p, unsigned int size);
> bool __kasan_check_write(const volatile void *p, unsigned int size);
> #else
> diff --git a/include/linux/kasan.h b/include/linux/kasan.h
> index 1d6ec3325163..b6fc14b3da53 100644
> --- a/include/linux/kasan.h
> +++ b/include/linux/kasan.h
> @@ -237,7 +237,8 @@ static inline void kasan_release_vmalloc(unsigned long start,
>
> #endif /* CONFIG_KASAN_VMALLOC */
>
> -#if defined(CONFIG_KASAN) && !defined(CONFIG_KASAN_VMALLOC)
> +#if (defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)) && \
> + !defined(CONFIG_KASAN_VMALLOC)
>
> /*
> * These functions provide a special case to support backing module
> @@ -247,12 +248,12 @@ static inline void kasan_release_vmalloc(unsigned long start,
> int kasan_module_alloc(void *addr, size_t size);
> void kasan_free_shadow(const struct vm_struct *vm);
>
> -#else /* CONFIG_KASAN && !CONFIG_KASAN_VMALLOC */
> +#else /* (CONFIG_KASAN_GENERIC || CONFIG_KASAN_SW_TAGS) && !CONFIG_KASAN_VMALLOC */
>
> static inline int kasan_module_alloc(void *addr, size_t size) { return 0; }
> static inline void kasan_free_shadow(const struct vm_struct *vm) {}
>
> -#endif /* CONFIG_KASAN && !CONFIG_KASAN_VMALLOC */
> +#endif /* (CONFIG_KASAN_GENERIC || CONFIG_KASAN_SW_TAGS) && !CONFIG_KASAN_VMALLOC */
>
> #ifdef CONFIG_KASAN_INLINE
> void kasan_non_canonical_hook(unsigned long addr);
> diff --git a/include/linux/moduleloader.h b/include/linux/moduleloader.h
> index 4fa67a8b2265..9e09d11ffe5b 100644
> --- a/include/linux/moduleloader.h
> +++ b/include/linux/moduleloader.h
> @@ -96,7 +96,8 @@ void module_arch_cleanup(struct module *mod);
> /* Any cleanup before freeing mod->module_init */
> void module_arch_freeing_init(struct module *mod);
>
> -#if defined(CONFIG_KASAN) && !defined(CONFIG_KASAN_VMALLOC)
> +#if (defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)) && \
> + !defined(CONFIG_KASAN_VMALLOC)
> #include <linux/kasan.h>
> #define MODULE_ALIGN (PAGE_SIZE << KASAN_SHADOW_SCALE_SHIFT)
> #else
> diff --git a/include/linux/string.h b/include/linux/string.h
> index b1f3894a0a3e..016a157e2251 100644
> --- a/include/linux/string.h
> +++ b/include/linux/string.h
> @@ -266,7 +266,7 @@ void __write_overflow(void) __compiletime_error("detected write beyond size of o
>
> #if !defined(__NO_FORTIFY) && defined(__OPTIMIZE__) && defined(CONFIG_FORTIFY_SOURCE)
>
> -#ifdef CONFIG_KASAN
> +#if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)
> extern void *__underlying_memchr(const void *p, int c, __kernel_size_t size) __RENAME(memchr);
> extern int __underlying_memcmp(const void *p, const void *q, __kernel_size_t size) __RENAME(memcmp);
> extern void *__underlying_memcpy(void *p, const void *q, __kernel_size_t size) __RENAME(memcpy);
> diff --git a/mm/ptdump.c b/mm/ptdump.c
> index ba88ec43ff21..4354c1422d57 100644
> --- a/mm/ptdump.c
> +++ b/mm/ptdump.c
> @@ -4,7 +4,7 @@
> #include <linux/ptdump.h>
> #include <linux/kasan.h>
>
> -#ifdef CONFIG_KASAN
> +#if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)
> /*
> * This is an optimization for KASAN=y case. Since all kasan page tables
> * eventually point to the kasan_early_shadow_page we could call note_page()
> @@ -31,7 +31,8 @@ static int ptdump_pgd_entry(pgd_t *pgd, unsigned long addr,
> struct ptdump_state *st = walk->private;
> pgd_t val = READ_ONCE(*pgd);
>
> -#if CONFIG_PGTABLE_LEVELS > 4 && defined(CONFIG_KASAN)
> +#if CONFIG_PGTABLE_LEVELS > 4 && \
> + (defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS))
> if (pgd_page(val) == virt_to_page(lm_alias(kasan_early_shadow_p4d)))
> return note_kasan_page_table(walk, addr);
> #endif
> @@ -51,7 +52,8 @@ static int ptdump_p4d_entry(p4d_t *p4d, unsigned long addr,
> struct ptdump_state *st = walk->private;
> p4d_t val = READ_ONCE(*p4d);
>
> -#if CONFIG_PGTABLE_LEVELS > 3 && defined(CONFIG_KASAN)
> +#if CONFIG_PGTABLE_LEVELS > 3 && \
> + (defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS))
> if (p4d_page(val) == virt_to_page(lm_alias(kasan_early_shadow_pud)))
> return note_kasan_page_table(walk, addr);
> #endif
> @@ -71,7 +73,8 @@ static int ptdump_pud_entry(pud_t *pud, unsigned long addr,
> struct ptdump_state *st = walk->private;
> pud_t val = READ_ONCE(*pud);
>
> -#if CONFIG_PGTABLE_LEVELS > 2 && defined(CONFIG_KASAN)
> +#if CONFIG_PGTABLE_LEVELS > 2 && \
> + (defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS))
> if (pud_page(val) == virt_to_page(lm_alias(kasan_early_shadow_pmd)))
> return note_kasan_page_table(walk, addr);
> #endif
> @@ -91,7 +94,7 @@ static int ptdump_pmd_entry(pmd_t *pmd, unsigned long addr,
> struct ptdump_state *st = walk->private;
> pmd_t val = READ_ONCE(*pmd);
>
> -#if defined(CONFIG_KASAN)
> +#if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)
> if (pmd_page(val) == virt_to_page(lm_alias(kasan_early_shadow_pte)))
> return note_kasan_page_table(walk, addr);
> #endif
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index 94133708889d..213677a5ed33 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -148,10 +148,12 @@ endif
> # we don't want to check (depends on variables KASAN_SANITIZE_obj.o, KASAN_SANITIZE)
> #
> ifeq ($(CONFIG_KASAN),y)
> +ifneq ($(CONFIG_KASAN_HW_TAGS),y)
> _c_flags += $(if $(patsubst n%,, \
> $(KASAN_SANITIZE_$(basetarget).o)$(KASAN_SANITIZE)y), \
> $(CFLAGS_KASAN), $(CFLAGS_KASAN_NOSANITIZE))
> endif
> +endif
>
> ifeq ($(CONFIG_UBSAN),y)
> _c_flags += $(if $(patsubst n%,, \
> --
> 2.29.2.222.g5d2a92d10f8-goog
>
--
Alexander Potapenko
Software Engineer
Google Germany GmbH
Erika-Mann-Straße, 33
80636 München
Geschäftsführer: Paul Manicle, Halimah DeLaine Prado
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
next prev parent reply other threads:[~2020-11-11 16:22 UTC|newest]
Thread overview: 107+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-10 22:09 [PATCH v9 00/44] kasan: add hardware tag-based mode for arm64 Andrey Konovalov
2020-11-10 22:09 ` [PATCH v9 01/44] kasan: drop unnecessary GPL text from comment headers Andrey Konovalov
2020-11-11 13:16 ` Alexander Potapenko
2020-11-10 22:09 ` [PATCH v9 02/44] kasan: KASAN_VMALLOC depends on KASAN_GENERIC Andrey Konovalov
2020-11-11 13:19 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 03/44] kasan: group vmalloc code Andrey Konovalov
2020-11-11 13:21 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 04/44] s390/kasan: include asm/page.h from asm/kasan.h Andrey Konovalov
2020-11-10 22:10 ` [PATCH v9 05/44] kasan: shadow declarations only for software modes Andrey Konovalov
2020-11-11 13:25 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 06/44] kasan: rename (un)poison_shadow to (un)poison_memory Andrey Konovalov
2020-11-11 13:26 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 07/44] kasan: rename KASAN_SHADOW_* to KASAN_GRANULE_* Andrey Konovalov
2020-11-11 13:45 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 08/44] kasan: only build init.c for software modes Andrey Konovalov
2020-11-11 13:46 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 09/44] kasan: split out shadow.c from common.c Andrey Konovalov
2020-11-11 14:07 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 10/44] kasan: define KASAN_GRANULE_PAGE Andrey Konovalov
2020-11-11 14:13 ` Alexander Potapenko
2020-11-11 18:47 ` Andrey Konovalov
2020-11-11 19:04 ` Marco Elver
2020-11-12 0:05 ` Andrey Konovalov
2020-11-10 22:10 ` [PATCH v9 11/44] kasan: rename report and tags files Andrey Konovalov
2020-11-11 14:15 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 12/44] kasan: don't duplicate config dependencies Andrey Konovalov
2020-11-11 14:20 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 13/44] kasan: hide invalid free check implementation Andrey Konovalov
2020-11-11 14:23 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 14/44] kasan: decode stack frame only with KASAN_STACK_ENABLE Andrey Konovalov
2020-11-11 14:25 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 15/44] kasan, arm64: only init shadow for software modes Andrey Konovalov
2020-11-11 14:30 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 16/44] kasan, arm64: only use kasan_depth " Andrey Konovalov
2020-11-11 14:59 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 17/44] kasan, arm64: move initialization message Andrey Konovalov
2020-11-11 15:03 ` Alexander Potapenko
2020-11-11 18:50 ` Andrey Konovalov
2020-11-12 15:09 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 18/44] kasan, arm64: rename kasan_init_tags and mark as __init Andrey Konovalov
2020-11-11 15:05 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 19/44] kasan: rename addr_has_shadow to addr_has_metadata Andrey Konovalov
2020-11-11 15:06 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 20/44] kasan: rename print_shadow_for_address to print_memory_metadata Andrey Konovalov
2020-11-11 15:07 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 21/44] kasan: kasan_non_canonical_hook only for software modes Andrey Konovalov
2020-11-11 15:08 ` Alexander Potapenko
2020-11-11 18:52 ` Andrey Konovalov
2020-11-12 15:16 ` Alexander Potapenko
2020-11-12 19:27 ` Andrey Konovalov
2020-11-10 22:10 ` [PATCH v9 22/44] kasan: rename SHADOW layout macros to META Andrey Konovalov
2020-11-11 15:18 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 23/44] kasan: separate metadata_fetch_row for each mode Andrey Konovalov
2020-11-11 15:22 ` Alexander Potapenko
2020-11-11 16:19 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 24/44] kasan, arm64: don't allow SW_TAGS with ARM64_MTE Andrey Konovalov
2020-11-11 15:52 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 25/44] kasan: introduce CONFIG_KASAN_HW_TAGS Andrey Konovalov
2020-11-11 15:58 ` Alexander Potapenko
2020-11-11 18:53 ` Andrey Konovalov
2020-11-10 22:10 ` [PATCH v9 26/44] arm64: Enable armv8.5-a asm-arch option Andrey Konovalov
2020-11-10 22:10 ` [PATCH v9 27/44] arm64: mte: Add in-kernel MTE helpers Andrey Konovalov
2020-11-10 22:10 ` [PATCH v9 28/44] arm64: mte: Reset the page tag in page->flags Andrey Konovalov
2020-11-12 9:31 ` Catalin Marinas
2020-11-12 9:39 ` Vincenzo Frascino
2020-11-10 22:10 ` [PATCH v9 29/44] arm64: mte: Add in-kernel tag fault handler Andrey Konovalov
2020-11-10 22:10 ` [PATCH v9 30/44] arm64: kasan: Allow enabling in-kernel MTE Andrey Konovalov
2020-11-12 9:43 ` Catalin Marinas
2020-11-12 16:46 ` Vincenzo Frascino
2020-11-13 11:17 ` Vincenzo Frascino
2020-11-13 12:00 ` Catalin Marinas
2020-11-13 12:04 ` Vincenzo Frascino
2020-11-10 22:10 ` [PATCH v9 31/44] arm64: mte: Convert gcr_user into an exclude mask Andrey Konovalov
2020-11-10 22:10 ` [PATCH v9 32/44] arm64: mte: Switch GCR_EL1 in kernel entry and exit Andrey Konovalov
2020-11-12 9:39 ` Catalin Marinas
2020-11-12 9:45 ` Vincenzo Frascino
2020-11-12 9:45 ` Catalin Marinas
2020-11-12 9:55 ` Vincenzo Frascino
2020-11-10 22:10 ` [PATCH v9 33/44] kasan, mm: untag page address in free_reserved_area Andrey Konovalov
2020-11-10 22:10 ` [PATCH v9 34/44] arm64: kasan: Align allocations for HW_TAGS Andrey Konovalov
2020-11-11 16:10 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 35/44] arm64: kasan: Add arch layer for memory tagging helpers Andrey Konovalov
2020-11-10 22:10 ` [PATCH v9 36/44] kasan: define KASAN_GRANULE_SIZE for HW_TAGS Andrey Konovalov
2020-11-11 16:13 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 37/44] kasan, x86, s390: update undef CONFIG_KASAN Andrey Konovalov
2020-11-11 16:15 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 38/44] kasan, arm64: expand CONFIG_KASAN checks Andrey Konovalov
2020-11-11 16:22 ` Alexander Potapenko [this message]
2020-11-10 22:10 ` [PATCH v9 39/44] kasan, arm64: implement HW_TAGS runtime Andrey Konovalov
2020-11-12 17:37 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 40/44] kasan, arm64: print report from tag fault handler Andrey Konovalov
2020-11-11 16:43 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 41/44] kasan, mm: reset tags when accessing metadata Andrey Konovalov
2020-11-12 16:10 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 42/44] kasan, arm64: enable CONFIG_KASAN_HW_TAGS Andrey Konovalov
2020-11-11 16:49 ` Alexander Potapenko
2020-11-10 22:10 ` [PATCH v9 43/44] kasan: add documentation for hardware tag-based mode Andrey Konovalov
2020-11-11 16:57 ` Alexander Potapenko
2020-11-11 18:54 ` Andrey Konovalov
2020-11-10 22:10 ` [PATCH v9 44/44] kselftest/arm64: Check GCR_EL1 after context switch Andrey Konovalov
2020-11-12 9:46 ` Catalin Marinas
2020-11-12 15:59 ` Alexander Potapenko
2020-11-12 16:09 ` Marco Elver
2020-11-12 16:41 ` Alexander Potapenko
2020-11-13 11:47 ` Vincenzo Frascino
2020-11-10 22:54 ` [PATCH v9 00/44] kasan: add hardware tag-based mode for arm64 Andrew Morton
2020-11-11 14:35 ` 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='CAG_fn=X_Suw5LALHm9f9s=ZgNSVZgHAjsghL5MLBPZ4EK7ghWA@mail.gmail.com' \
--to=glider@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=elver@google.com \
--cc=eugenis@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).