From: Andrey Konovalov <andreyknvl@google.com>
To: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>,
Vincenzo Frascino <vincenzo.frascino@arm.com>,
Dmitry Vyukov <dvyukov@google.com>,
Andrey Ryabinin <aryabinin@virtuozzo.com>,
Alexander Potapenko <glider@google.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@googlegroups.com, linux-arm-kernel@lists.infradead.org,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Andrey Konovalov <andreyknvl@google.com>
Subject: [PATCH v9 07/44] kasan: rename KASAN_SHADOW_* to KASAN_GRANULE_*
Date: Tue, 10 Nov 2020 23:10:04 +0100 [thread overview]
Message-ID: <29bbfde90235ab7ac985e8bae79866cf885e4a29.1605046192.git.andreyknvl@google.com> (raw)
In-Reply-To: <cover.1605046192.git.andreyknvl@google.com>
This is a preparatory commit for the upcoming addition of a new hardware
tag-based (MTE-based) KASAN mode.
The new mode won't be using shadow memory, but will still use the concept
of memory granules. Each memory granule maps to a single metadata entry:
8 bytes per one shadow byte for generic mode, 16 bytes per one shadow byte
for software tag-based mode, and 16 bytes per one allocation tag for
hardware tag-based mode.
Rename KASAN_SHADOW_SCALE_SIZE to KASAN_GRANULE_SIZE, and KASAN_SHADOW_MASK
to KASAN_GRANULE_MASK.
Also use MASK when used as a mask, otherwise use SIZE.
No functional changes.
Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Reviewed-by: Marco Elver <elver@google.com>
---
Change-Id: Iac733e2248aa9d29f6fc425d8946ba07cca73ecf
---
Documentation/dev-tools/kasan.rst | 2 +-
lib/test_kasan.c | 2 +-
lib/test_kasan_module.c | 2 +-
mm/kasan/common.c | 39 ++++++++++++++++---------------
mm/kasan/generic.c | 14 +++++------
mm/kasan/generic_report.c | 8 +++----
mm/kasan/init.c | 8 +++----
mm/kasan/kasan.h | 4 ++--
mm/kasan/report.c | 10 ++++----
mm/kasan/tags_report.c | 2 +-
10 files changed, 46 insertions(+), 45 deletions(-)
diff --git a/Documentation/dev-tools/kasan.rst b/Documentation/dev-tools/kasan.rst
index 2b68addaadcd..edca4be5e405 100644
--- a/Documentation/dev-tools/kasan.rst
+++ b/Documentation/dev-tools/kasan.rst
@@ -264,7 +264,7 @@ Most mappings in vmalloc space are small, requiring less than a full
page of shadow space. Allocating a full shadow page per mapping would
therefore be wasteful. Furthermore, to ensure that different mappings
use different shadow pages, mappings would have to be aligned to
-``KASAN_SHADOW_SCALE_SIZE * PAGE_SIZE``.
+``KASAN_GRANULE_SIZE * PAGE_SIZE``.
Instead, we share backing space across multiple mappings. We allocate
a backing page when a mapping in vmalloc space uses a particular page
diff --git a/lib/test_kasan.c b/lib/test_kasan.c
index 662f862702fc..2947274cc2d3 100644
--- a/lib/test_kasan.c
+++ b/lib/test_kasan.c
@@ -25,7 +25,7 @@
#include "../mm/kasan/kasan.h"
-#define OOB_TAG_OFF (IS_ENABLED(CONFIG_KASAN_GENERIC) ? 0 : KASAN_SHADOW_SCALE_SIZE)
+#define OOB_TAG_OFF (IS_ENABLED(CONFIG_KASAN_GENERIC) ? 0 : KASAN_GRANULE_SIZE)
/*
* We assign some test results to these globals to make sure the tests
diff --git a/lib/test_kasan_module.c b/lib/test_kasan_module.c
index 2d68db6ae67b..fcb991c3aaf8 100644
--- a/lib/test_kasan_module.c
+++ b/lib/test_kasan_module.c
@@ -15,7 +15,7 @@
#include "../mm/kasan/kasan.h"
-#define OOB_TAG_OFF (IS_ENABLED(CONFIG_KASAN_GENERIC) ? 0 : KASAN_SHADOW_SCALE_SIZE)
+#define OOB_TAG_OFF (IS_ENABLED(CONFIG_KASAN_GENERIC) ? 0 : KASAN_GRANULE_SIZE)
static noinline void __init copy_user_test(void)
{
diff --git a/mm/kasan/common.c b/mm/kasan/common.c
index a4b73fa0dd7e..f65c9f792f8f 100644
--- a/mm/kasan/common.c
+++ b/mm/kasan/common.c
@@ -106,7 +106,7 @@ void *memcpy(void *dest, const void *src, size_t len)
/*
* Poisons the shadow memory for 'size' bytes starting from 'addr'.
- * Memory addresses should be aligned to KASAN_SHADOW_SCALE_SIZE.
+ * Memory addresses should be aligned to KASAN_GRANULE_SIZE.
*/
void kasan_poison_memory(const void *address, size_t size, u8 value)
{
@@ -138,13 +138,13 @@ void kasan_unpoison_memory(const void *address, size_t size)
kasan_poison_memory(address, size, tag);
- if (size & KASAN_SHADOW_MASK) {
+ if (size & KASAN_GRANULE_MASK) {
u8 *shadow = (u8 *)kasan_mem_to_shadow(address + size);
if (IS_ENABLED(CONFIG_KASAN_SW_TAGS))
*shadow = tag;
else
- *shadow = size & KASAN_SHADOW_MASK;
+ *shadow = size & KASAN_GRANULE_MASK;
}
}
@@ -296,7 +296,7 @@ void kasan_unpoison_object_data(struct kmem_cache *cache, void *object)
void kasan_poison_object_data(struct kmem_cache *cache, void *object)
{
kasan_poison_memory(object,
- round_up(cache->object_size, KASAN_SHADOW_SCALE_SIZE),
+ round_up(cache->object_size, KASAN_GRANULE_SIZE),
KASAN_KMALLOC_REDZONE);
}
@@ -368,7 +368,7 @@ static inline bool shadow_invalid(u8 tag, s8 shadow_byte)
{
if (IS_ENABLED(CONFIG_KASAN_GENERIC))
return shadow_byte < 0 ||
- shadow_byte >= KASAN_SHADOW_SCALE_SIZE;
+ shadow_byte >= KASAN_GRANULE_SIZE;
/* else CONFIG_KASAN_SW_TAGS: */
if ((u8)shadow_byte == KASAN_TAG_INVALID)
@@ -407,7 +407,7 @@ static bool __kasan_slab_free(struct kmem_cache *cache, void *object,
return true;
}
- rounded_up_size = round_up(cache->object_size, KASAN_SHADOW_SCALE_SIZE);
+ rounded_up_size = round_up(cache->object_size, KASAN_GRANULE_SIZE);
kasan_poison_memory(object, rounded_up_size, KASAN_KMALLOC_FREE);
if ((IS_ENABLED(CONFIG_KASAN_GENERIC) && !quarantine) ||
@@ -440,9 +440,9 @@ static void *__kasan_kmalloc(struct kmem_cache *cache, const void *object,
return NULL;
redzone_start = round_up((unsigned long)(object + size),
- KASAN_SHADOW_SCALE_SIZE);
+ KASAN_GRANULE_SIZE);
redzone_end = round_up((unsigned long)object + cache->object_size,
- KASAN_SHADOW_SCALE_SIZE);
+ KASAN_GRANULE_SIZE);
if (IS_ENABLED(CONFIG_KASAN_SW_TAGS))
tag = assign_tag(cache, object, false, keep_tag);
@@ -486,7 +486,7 @@ void * __must_check kasan_kmalloc_large(const void *ptr, size_t size,
page = virt_to_page(ptr);
redzone_start = round_up((unsigned long)(ptr + size),
- KASAN_SHADOW_SCALE_SIZE);
+ KASAN_GRANULE_SIZE);
redzone_end = (unsigned long)ptr + page_size(page);
kasan_unpoison_memory(ptr, size);
@@ -584,8 +584,8 @@ static int __meminit kasan_mem_notifier(struct notifier_block *nb,
shadow_size = nr_shadow_pages << PAGE_SHIFT;
shadow_end = shadow_start + shadow_size;
- if (WARN_ON(mem_data->nr_pages % KASAN_SHADOW_SCALE_SIZE) ||
- WARN_ON(start_kaddr % (KASAN_SHADOW_SCALE_SIZE << PAGE_SHIFT)))
+ if (WARN_ON(mem_data->nr_pages % KASAN_GRANULE_SIZE) ||
+ WARN_ON(start_kaddr % (KASAN_GRANULE_SIZE << PAGE_SHIFT)))
return NOTIFY_BAD;
switch (action) {
@@ -743,7 +743,7 @@ void kasan_poison_vmalloc(const void *start, unsigned long size)
if (!is_vmalloc_or_module_addr(start))
return;
- size = round_up(size, KASAN_SHADOW_SCALE_SIZE);
+ size = round_up(size, KASAN_GRANULE_SIZE);
kasan_poison_memory(start, size, KASAN_VMALLOC_INVALID);
}
@@ -856,22 +856,22 @@ void kasan_release_vmalloc(unsigned long start, unsigned long end,
unsigned long region_start, region_end;
unsigned long size;
- region_start = ALIGN(start, PAGE_SIZE * KASAN_SHADOW_SCALE_SIZE);
- region_end = ALIGN_DOWN(end, PAGE_SIZE * KASAN_SHADOW_SCALE_SIZE);
+ region_start = ALIGN(start, PAGE_SIZE * KASAN_GRANULE_SIZE);
+ region_end = ALIGN_DOWN(end, PAGE_SIZE * KASAN_GRANULE_SIZE);
free_region_start = ALIGN(free_region_start,
- PAGE_SIZE * KASAN_SHADOW_SCALE_SIZE);
+ PAGE_SIZE * KASAN_GRANULE_SIZE);
if (start != region_start &&
free_region_start < region_start)
- region_start -= PAGE_SIZE * KASAN_SHADOW_SCALE_SIZE;
+ region_start -= PAGE_SIZE * KASAN_GRANULE_SIZE;
free_region_end = ALIGN_DOWN(free_region_end,
- PAGE_SIZE * KASAN_SHADOW_SCALE_SIZE);
+ PAGE_SIZE * KASAN_GRANULE_SIZE);
if (end != region_end &&
free_region_end > region_end)
- region_end += PAGE_SIZE * KASAN_SHADOW_SCALE_SIZE;
+ region_end += PAGE_SIZE * KASAN_GRANULE_SIZE;
shadow_start = kasan_mem_to_shadow((void *)region_start);
shadow_end = kasan_mem_to_shadow((void *)region_end);
@@ -897,7 +897,8 @@ int kasan_module_alloc(void *addr, size_t size)
unsigned long shadow_start;
shadow_start = (unsigned long)kasan_mem_to_shadow(addr);
- scaled_size = (size + KASAN_SHADOW_MASK) >> KASAN_SHADOW_SCALE_SHIFT;
+ scaled_size = (size + KASAN_GRANULE_SIZE - 1) >>
+ KASAN_SHADOW_SCALE_SHIFT;
shadow_size = round_up(scaled_size, PAGE_SIZE);
if (WARN_ON(!PAGE_ALIGNED(shadow_start)))
diff --git a/mm/kasan/generic.c b/mm/kasan/generic.c
index 7006157c674b..ec4417156943 100644
--- a/mm/kasan/generic.c
+++ b/mm/kasan/generic.c
@@ -46,7 +46,7 @@ static __always_inline bool memory_is_poisoned_1(unsigned long addr)
s8 shadow_value = *(s8 *)kasan_mem_to_shadow((void *)addr);
if (unlikely(shadow_value)) {
- s8 last_accessible_byte = addr & KASAN_SHADOW_MASK;
+ s8 last_accessible_byte = addr & KASAN_GRANULE_MASK;
return unlikely(last_accessible_byte >= shadow_value);
}
@@ -62,7 +62,7 @@ static __always_inline bool memory_is_poisoned_2_4_8(unsigned long addr,
* Access crosses 8(shadow size)-byte boundary. Such access maps
* into 2 shadow bytes, so we need to check them both.
*/
- if (unlikely(((addr + size - 1) & KASAN_SHADOW_MASK) < size - 1))
+ if (unlikely(((addr + size - 1) & KASAN_GRANULE_MASK) < size - 1))
return *shadow_addr || memory_is_poisoned_1(addr + size - 1);
return memory_is_poisoned_1(addr + size - 1);
@@ -73,7 +73,7 @@ static __always_inline bool memory_is_poisoned_16(unsigned long addr)
u16 *shadow_addr = (u16 *)kasan_mem_to_shadow((void *)addr);
/* Unaligned 16-bytes access maps into 3 shadow bytes. */
- if (unlikely(!IS_ALIGNED(addr, KASAN_SHADOW_SCALE_SIZE)))
+ if (unlikely(!IS_ALIGNED(addr, KASAN_GRANULE_SIZE)))
return *shadow_addr || memory_is_poisoned_1(addr + 15);
return *shadow_addr;
@@ -134,7 +134,7 @@ static __always_inline bool memory_is_poisoned_n(unsigned long addr,
s8 *last_shadow = (s8 *)kasan_mem_to_shadow((void *)last_byte);
if (unlikely(ret != (unsigned long)last_shadow ||
- ((long)(last_byte & KASAN_SHADOW_MASK) >= *last_shadow)))
+ ((long)(last_byte & KASAN_GRANULE_MASK) >= *last_shadow)))
return true;
}
return false;
@@ -200,7 +200,7 @@ void kasan_cache_shutdown(struct kmem_cache *cache)
static void register_global(struct kasan_global *global)
{
- size_t aligned_size = round_up(global->size, KASAN_SHADOW_SCALE_SIZE);
+ size_t aligned_size = round_up(global->size, KASAN_GRANULE_SIZE);
kasan_unpoison_memory(global->beg, global->size);
@@ -274,10 +274,10 @@ EXPORT_SYMBOL(__asan_handle_no_return);
/* Emitted by compiler to poison alloca()ed objects. */
void __asan_alloca_poison(unsigned long addr, size_t size)
{
- size_t rounded_up_size = round_up(size, KASAN_SHADOW_SCALE_SIZE);
+ size_t rounded_up_size = round_up(size, KASAN_GRANULE_SIZE);
size_t padding_size = round_up(size, KASAN_ALLOCA_REDZONE_SIZE) -
rounded_up_size;
- size_t rounded_down_size = round_down(size, KASAN_SHADOW_SCALE_SIZE);
+ size_t rounded_down_size = round_down(size, KASAN_GRANULE_SIZE);
const void *left_redzone = (const void *)(addr -
KASAN_ALLOCA_REDZONE_SIZE);
diff --git a/mm/kasan/generic_report.c b/mm/kasan/generic_report.c
index 6bb3f66992df..7d5b9e5c7cfe 100644
--- a/mm/kasan/generic_report.c
+++ b/mm/kasan/generic_report.c
@@ -34,7 +34,7 @@ void *find_first_bad_addr(void *addr, size_t size)
void *p = addr;
while (p < addr + size && !(*(u8 *)kasan_mem_to_shadow(p)))
- p += KASAN_SHADOW_SCALE_SIZE;
+ p += KASAN_GRANULE_SIZE;
return p;
}
@@ -46,14 +46,14 @@ static const char *get_shadow_bug_type(struct kasan_access_info *info)
shadow_addr = (u8 *)kasan_mem_to_shadow(info->first_bad_addr);
/*
- * If shadow byte value is in [0, KASAN_SHADOW_SCALE_SIZE) we can look
+ * If shadow byte value is in [0, KASAN_GRANULE_SIZE) we can look
* at the next shadow byte to determine the type of the bad access.
*/
- if (*shadow_addr > 0 && *shadow_addr <= KASAN_SHADOW_SCALE_SIZE - 1)
+ if (*shadow_addr > 0 && *shadow_addr <= KASAN_GRANULE_SIZE - 1)
shadow_addr++;
switch (*shadow_addr) {
- case 0 ... KASAN_SHADOW_SCALE_SIZE - 1:
+ case 0 ... KASAN_GRANULE_SIZE - 1:
/*
* In theory it's still possible to see these shadow values
* due to a data race in the kernel code.
diff --git a/mm/kasan/init.c b/mm/kasan/init.c
index 9ce8cc5b8621..dfddd6c39fe6 100644
--- a/mm/kasan/init.c
+++ b/mm/kasan/init.c
@@ -442,8 +442,8 @@ void kasan_remove_zero_shadow(void *start, unsigned long size)
end = addr + (size >> KASAN_SHADOW_SCALE_SHIFT);
if (WARN_ON((unsigned long)start %
- (KASAN_SHADOW_SCALE_SIZE * PAGE_SIZE)) ||
- WARN_ON(size % (KASAN_SHADOW_SCALE_SIZE * PAGE_SIZE)))
+ (KASAN_GRANULE_SIZE * PAGE_SIZE)) ||
+ WARN_ON(size % (KASAN_GRANULE_SIZE * PAGE_SIZE)))
return;
for (; addr < end; addr = next) {
@@ -477,8 +477,8 @@ int kasan_add_zero_shadow(void *start, unsigned long size)
shadow_end = shadow_start + (size >> KASAN_SHADOW_SCALE_SHIFT);
if (WARN_ON((unsigned long)start %
- (KASAN_SHADOW_SCALE_SIZE * PAGE_SIZE)) ||
- WARN_ON(size % (KASAN_SHADOW_SCALE_SIZE * PAGE_SIZE)))
+ (KASAN_GRANULE_SIZE * PAGE_SIZE)) ||
+ WARN_ON(size % (KASAN_GRANULE_SIZE * PAGE_SIZE)))
return -EINVAL;
ret = kasan_populate_early_shadow(shadow_start, shadow_end);
diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h
index 03450d3b31f7..c31e2c739301 100644
--- a/mm/kasan/kasan.h
+++ b/mm/kasan/kasan.h
@@ -5,8 +5,8 @@
#include <linux/kasan.h>
#include <linux/stackdepot.h>
-#define KASAN_SHADOW_SCALE_SIZE (1UL << KASAN_SHADOW_SCALE_SHIFT)
-#define KASAN_SHADOW_MASK (KASAN_SHADOW_SCALE_SIZE - 1)
+#define KASAN_GRANULE_SIZE (1UL << KASAN_SHADOW_SCALE_SHIFT)
+#define KASAN_GRANULE_MASK (KASAN_GRANULE_SIZE - 1)
#define KASAN_TAG_KERNEL 0xFF /* native kernel pointers tag */
#define KASAN_TAG_INVALID 0xFE /* inaccessible memory tag */
diff --git a/mm/kasan/report.c b/mm/kasan/report.c
index d500923abc8b..7b8dcb799a78 100644
--- a/mm/kasan/report.c
+++ b/mm/kasan/report.c
@@ -314,24 +314,24 @@ static bool __must_check get_address_stack_frame_info(const void *addr,
return false;
aligned_addr = round_down((unsigned long)addr, sizeof(long));
- mem_ptr = round_down(aligned_addr, KASAN_SHADOW_SCALE_SIZE);
+ mem_ptr = round_down(aligned_addr, KASAN_GRANULE_SIZE);
shadow_ptr = kasan_mem_to_shadow((void *)aligned_addr);
shadow_bottom = kasan_mem_to_shadow(end_of_stack(current));
while (shadow_ptr >= shadow_bottom && *shadow_ptr != KASAN_STACK_LEFT) {
shadow_ptr--;
- mem_ptr -= KASAN_SHADOW_SCALE_SIZE;
+ mem_ptr -= KASAN_GRANULE_SIZE;
}
while (shadow_ptr >= shadow_bottom && *shadow_ptr == KASAN_STACK_LEFT) {
shadow_ptr--;
- mem_ptr -= KASAN_SHADOW_SCALE_SIZE;
+ mem_ptr -= KASAN_GRANULE_SIZE;
}
if (shadow_ptr < shadow_bottom)
return false;
- frame = (const unsigned long *)(mem_ptr + KASAN_SHADOW_SCALE_SIZE);
+ frame = (const unsigned long *)(mem_ptr + KASAN_GRANULE_SIZE);
if (frame[0] != KASAN_CURRENT_STACK_FRAME_MAGIC) {
pr_err("KASAN internal error: frame info validation failed; invalid marker: %lu\n",
frame[0]);
@@ -599,6 +599,6 @@ void kasan_non_canonical_hook(unsigned long addr)
else
bug_type = "maybe wild-memory-access";
pr_alert("KASAN: %s in range [0x%016lx-0x%016lx]\n", bug_type,
- orig_addr, orig_addr + KASAN_SHADOW_MASK);
+ orig_addr, orig_addr + KASAN_GRANULE_SIZE - 1);
}
#endif
diff --git a/mm/kasan/tags_report.c b/mm/kasan/tags_report.c
index 5f183501b871..c87d5a343b4e 100644
--- a/mm/kasan/tags_report.c
+++ b/mm/kasan/tags_report.c
@@ -76,7 +76,7 @@ void *find_first_bad_addr(void *addr, size_t size)
void *end = p + size;
while (p < end && tag == *(u8 *)kasan_mem_to_shadow(p))
- p += KASAN_SHADOW_SCALE_SIZE;
+ p += KASAN_GRANULE_SIZE;
return p;
}
--
2.29.2.222.g5d2a92d10f8-goog
next prev parent reply other threads:[~2020-11-10 22:14 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 ` Andrey Konovalov [this message]
2020-11-11 13:45 ` [PATCH v9 07/44] kasan: rename KASAN_SHADOW_* to KASAN_GRANULE_* 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
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=29bbfde90235ab7ac985e8bae79866cf885e4a29.1605046192.git.andreyknvl@google.com \
--to=andreyknvl@google.com \
--cc=Branislav.Rankov@arm.com \
--cc=akpm@linux-foundation.org \
--cc=aryabinin@virtuozzo.com \
--cc=catalin.marinas@arm.com \
--cc=dvyukov@google.com \
--cc=elver@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 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).