[PATCH v8 02/43] kasan: KASAN_VMALLOC depends on KASAN_GENERIC

2020-11-04 Thread Andrey Konovalov
Currently only generic KASAN mode supports vmalloc, reflect that in the config. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: I1889e5b3bed28cc5d607802fb6ae43ba461c0dc1 --- lib/Kconfig.kasan | 2 +- 1 file changed, 1 insertion(+), 1

[PATCH v8 03/43] kasan: group vmalloc code

2020-11-04 Thread Andrey Konovalov
This is a preparatory commit for the upcoming addition of a new hardware tag-based (MTE-based) KASAN mode. Group all vmalloc-related function declarations in include/linux/kasan.h, and their implementations in mm/kasan/common.c. No functional changes. Signed-off-by: Andrey Konovalov Signed-off

[PATCH v8 22/43] kasan: rename SHADOW layout macros to META

2020-11-04 Thread Andrey Konovalov
This is a preparatory commit for the upcoming addition of a new hardware tag-based (MTE-based) KASAN mode. Hardware tag-based KASAN won't be using shadow memory, but will reuse these macros. Rename "SHADOW" to implementation-neutral "META". No functional changes. Signed-off-

[PATCH v8 18/43] kasan, arm64: rename kasan_init_tags and mark as __init

2020-11-04 Thread Andrey Konovalov
Rename kasan_init_tags() to kasan_init_sw_tags() as the upcoming hardware tag-based KASAN mode will have its own initialization routine. Also similarly to kasan_init() mark kasan_init_tags() as __init. Signed-off-by: Andrey Konovalov --- Change-Id: I99aa2f7115d38a34ed85b329dadab6c7d6952416

[PATCH v8 07/43] kasan: rename KASAN_SHADOW_* to KASAN_GRANULE_*

2020-11-04 Thread Andrey Konovalov
changes. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: Iac733e2248aa9d29f6fc425d8946ba07cca73ecf --- Documentation/dev-tools/kasan.rst | 2 +- lib/test_kasan.c | 2 +- lib/test_kasan_module.c | 2 +- mm/kasan

[PATCH v8 05/43] kasan: shadow declarations only for software modes

2020-11-04 Thread Andrey Konovalov
This is a preparatory commit for the upcoming addition of a new hardware tag-based (MTE-based) KASAN mode. Group shadow-related KASAN function declarations and only define them for the two existing software modes. No functional changes for software modes. Signed-off-by: Andrey Konovalov Signed

[PATCH v8 04/43] s390/kasan: include asm/page.h from asm/kasan.h

2020-11-04 Thread Andrey Konovalov
asm/kasan.h relies on pgd_t and _REGION1_SHIFT definitions and therefore requires asm/pgtable.h include. Include asm/pgtable.h from asm/kasan.h. Signed-off-by: Andrey Konovalov Acked-by: Vasily Gorbik --- Change-Id: I369a8f9beb442b9d05733892232345c3f4120e0a --- arch/s390/include/asm/kasan.h

[PATCH v8 16/43] kasan, arm64: only use kasan_depth for software modes

2020-11-04 Thread Andrey Konovalov
This is a preparatory commit for the upcoming addition of a new hardware tag-based (MTE-based) KASAN mode. Hardware tag-based KASAN won't use kasan_depth. Only define and use it when one of the software KASAN modes are enabled. No functional changes for software modes. Signed-off-by: Andrey

[PATCH v8 15/43] kasan, arm64: only init shadow for software modes

2020-11-04 Thread Andrey Konovalov
This is a preparatory commit for the upcoming addition of a new hardware tag-based (MTE-based) KASAN mode. Hardware tag-based KASAN won't be using shadow memory. Only initialize it when one of the software KASAN modes are enabled. No functional changes for software modes. Signed-off-by: Andrey

[PATCH v8 12/43] kasan: don't duplicate config dependencies

2020-11-04 Thread Andrey Konovalov
Both KASAN_GENERIC and KASAN_SW_TAGS have common dependencies, move those to KASAN. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: I77e475802e8f1750b9154fe4a6e6da4456054fcd --- lib/Kconfig.kasan | 8 ++-- 1 file changed, 2

[PATCH v8 08/43] kasan: only build init.c for software modes

2020-11-04 Thread Andrey Konovalov
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, so only build init.c that contains shadow initialization code for software modes. No functional changes for software modes. Signed-off-by: Andrey

[PATCH v8 13/43] kasan: hide invalid free check implementation

2020-11-04 Thread Andrey Konovalov
(). Also simplify the code for software tag-based mode. No functional changes for software modes. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: I5fae9531c9fc948eb4d4e0c589744032fc5a0789 --- mm/kasan/common.c | 19

[PATCH v8 11/43] kasan: rename report and tags files

2020-11-04 Thread Andrey Konovalov
Rename generic_report.c to report_generic.c and tags_report.c to report_sw_tags.c, as their content is more relevant to report.c file. Also rename tags.c to sw_tags.c to better reflect that this file contains code for software tag-based mode. No functional changes. Signed-off-by: Andrey

[PATCH v8 24/43] kasan, arm64: don't allow SW_TAGS with ARM64_MTE

2020-11-04 Thread Andrey Konovalov
Software tag-based KASAN provides its own tag checking machinery that can conflict with MTE. Don't allow enabling software tag-based KASAN when MTE is enabled. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Catalin Marinas --- Change-Id

[PATCH v8 26/43] arm64: Enable armv8.5-a asm-arch option

2020-11-04 Thread Andrey Konovalov
Frascino Signed-off-by: Andrey Konovalov Reviewed-by: Catalin Marinas --- Change-Id: I172e15e4c189f073e4c14a10276b276092e76536 --- arch/arm64/Kconfig | 4 arch/arm64/Makefile | 5 + 2 files changed, 9 insertions(+) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index d58b4dcc6d44

[PATCH v8 20/43] kasan: rename print_shadow_for_address to print_memory_metadata

2020-11-04 Thread Andrey Konovalov
This is a preparatory commit for the upcoming addition of a new hardware tag-based (MTE-based) KASAN mode. Hardware tag-based KASAN won't be using shadow memory, but will reuse this function. Rename "shadow" to implementation-neutral "metadata". No functional changes. S

[PATCH v8 19/43] kasan: rename addr_has_shadow to addr_has_metadata

2020-11-04 Thread Andrey Konovalov
This is a preparatory commit for the upcoming addition of a new hardware tag-based (MTE-based) KASAN mode. Hardware tag-based KASAN won't be using shadow memory, but will reuse this function. Rename "shadow" to implementation-neutral "metadata". No functional changes. S

[PATCH v8 41/43] kasan, arm64: enable CONFIG_KASAN_HW_TAGS

2020-11-04 Thread Andrey Konovalov
Hardware tag-based KASAN is now ready, enable the configuration option. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Acked-by: Catalin Marinas --- Change-Id: I6eb1eea770e6b61ad71c701231b8d815a7ccc853 --- arch/arm64/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git

[PATCH v8 42/43] kasan: add documentation for hardware tag-based mode

2020-11-04 Thread Andrey Konovalov
Add documentation for hardware tag-based KASAN mode and also add some clarifications for software tag-based mode. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: Ib46cb444cfdee44054628940a82f5139e10d0258 --- Documentation/dev-tools

[PATCH v8 28/43] arm64: mte: Reset the page tag in page->flags

2020-11-04 Thread Andrey Konovalov
aps the same with PROT_MTE and becomes tagged the subsequent kernel access would fail. Signed-off-by: Vincenzo Frascino Signed-off-by: Andrey Konovalov --- Change-Id: I8451d438bb63364de2a3e68041e3a27866921d4e --- arch/arm64/kernel/mte.c | 1 + arch/arm64/mm/copypage.c | 1 + arch/arm64/mm/mteswa

[PATCH v8 29/43] arm64: mte: Add in-kernel tag fault handler

2020-11-04 Thread Andrey Konovalov
fault handler for kernel addresses is currently empty and will be filled in by a future commit. Signed-off-by: Vincenzo Frascino Co-developed-by: Andrey Konovalov Signed-off-by: Andrey Konovalov --- Change-Id: I9b8aa79567f7c45f4d6a1290efcf34567e620717 --- arch/arm64/include/asm/uaccess.h | 23

[PATCH v8 40/43] kasan, mm: reset tags when accessing metadata

2020-11-04 Thread Andrey Konovalov
is disabled after the first one. Instead, reset tags when accessing metadata (currently only for SLUB). Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Acked-by: Marco Elver --- Change-Id: I39f3c4d4f29299d4fbbda039bedf230db1c746fb --- mm/page_alloc.c | 4 +++- mm/page_poison.c | 2

[PATCH v8 37/43] kasan, arm64: expand CONFIG_KASAN checks

2020-11-04 Thread Andrey Konovalov
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 Signed-off-by: Vincenzo Frascino --- Change-Id

[PATCH v8 38/43] kasan, arm64: implement HW_TAGS runtime

2020-11-04 Thread Andrey Konovalov
Provide implementation of KASAN functions required for the hardware tag-based mode. Those include core functions for memory and pointer tagging (tags_hw.c) and bug reporting (report_tags_hw.c). Also adapt common KASAN code to support the new mode. Signed-off-by: Andrey Konovalov Signed-off

[PATCH v8 43/43] kselftest/arm64: Check GCR_EL1 after context switch

2020-11-04 Thread Andrey Konovalov
that it is the same. If the values are not the same it reports a failure. Note: The test has been extended to verify that even SYNC and ASYNC mode setting is preserved correctly over context switching. Signed-off-by: Vincenzo Frascino Signed-off-by: Andrey Konovalov --- Change-Id

[PATCH v8 34/43] arm64: kasan: Add arch layer for memory tagging helpers

2020-11-04 Thread Andrey Konovalov
-based KASAN support for other architectures in the future by defining the appropriate arch_*() macros. Signed-off-by: Andrey Konovalov Co-developed-by: Vincenzo Frascino Signed-off-by: Vincenzo Frascino Reviewed-by: Catalin Marinas --- Change-Id: I42b0795a28067872f8308e00c6f0195bca435c2a

[PATCH v8 39/43] kasan, arm64: print report from tag fault handler

2020-11-04 Thread Andrey Konovalov
code to handle this case. Signed-off-by: Andrey Konovalov Co-developed-by: Vincenzo Frascino Signed-off-by: Vincenzo Frascino Reviewed-by: Catalin Marinas --- Change-Id: I3780fe7db6e075dff2937d3d8508f55c9322b095 --- arch/arm64/mm/fault.c | 14 ++ mm/kasan/report.c | 11

[PATCH v8 31/43] arm64: mte: Convert gcr_user into an exclude mask

2020-11-04 Thread Andrey Konovalov
-by: Andrey Konovalov Reviewed-by: Catalin Marinas --- Change-Id: Id15c0b47582fb51594bb26fb8353d78c7d0953c1 --- arch/arm64/include/asm/processor.h | 2 +- arch/arm64/kernel/mte.c| 29 +++-- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/arch

[PATCH v8 33/43] arm64: kasan: Align allocations for HW_TAGS

2020-11-04 Thread Andrey Konovalov
Hardware tag-based KASAN uses the memory tagging approach, which requires all allocations to be aligned to the memory granule size. Align the allocations to MTE_GRANULE_SIZE via ARCH_SLAB_MINALIGN when CONFIG_KASAN_HW_TAGS is enabled. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo

[PATCH v8 32/43] arm64: mte: Switch GCR_EL1 in kernel entry and exit

2020-11-04 Thread Andrey Konovalov
implementation has to make sure that the GCR_EL1 setting for the kernel does not affect the userspace processes and viceversa. Save and restore the kernel/user mask in GCR_EL1 in kernel entry and exit. Signed-off-by: Vincenzo Frascino Co-developed-by: Andrey Konovalov Signed-off-by: Andrey

[PATCH v8 36/43] kasan, x86, s390: update undef CONFIG_KASAN

2020-11-04 Thread Andrey Konovalov
runtime and shouldn't have any KASAN annotations. Also #undef CONFIG_KASAN_GENERIC with CONFIG_KASAN. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver Acked-by: Vasily Gorbik --- Change-Id: I2a622db0cb86a8feb60c30d8cb09190075be2a90 --- arch/s390/boot

[PATCH v8 30/43] arm64: kasan: Allow enabling in-kernel MTE

2020-11-04 Thread Andrey Konovalov
-by: Andrey Konovalov Signed-off-by: Andrey Konovalov --- Change-Id: I4d67497268bb7f0c2fc5dcacefa1e273df4af71d --- arch/arm64/include/asm/mte-kasan.h | 6 ++ arch/arm64/kernel/mte.c| 7 +++ arch/arm64/mm/proc.S | 23 --- 3 files changed, 33

[PATCH v8 35/43] kasan: define KASAN_GRANULE_SIZE for HW_TAGS

2020-11-04 Thread Andrey Konovalov
Hardware tag-based KASAN has granules of MTE_GRANULE_SIZE. Define KASAN_GRANULE_SIZE to MTE_GRANULE_SIZE for CONFIG_KASAN_HW_TAGS. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: I5d1117e6a991cbca00d2cfb4ba66e8ae2d8f513a --- mm/kasan

[PATCH v8 23/43] kasan: separate metadata_fetch_row for each mode

2020-11-04 Thread Andrey Konovalov
-based KASAN will provide its own implementation that doesn't use shadow memory. No functional changes for software modes. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: I5b0ed1d079ea776e620beca6a529a861e7dced95 --- mm/kasan/kasan.h

[PATCH v8 09/43] kasan: split out shadow.c from common.c

2020-11-04 Thread Andrey Konovalov
for software modes. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: Ic1c32ce72d4649848e9e6a1f2c8dd269c77673f2 --- mm/kasan/Makefile | 6 +- mm/kasan/common.c | 486 +--- mm/kasan/shadow.c | 505

[PATCH v8 25/43] kasan: introduce CONFIG_KASAN_HW_TAGS

2020-11-04 Thread Andrey Konovalov
This patch adds a configuration option for a new KASAN mode called hardware tag-based KASAN. This mode uses the memory tagging approach like the software tag-based mode, but relies on arm64 Memory Tagging Extension feature for tag management and access checking. Signed-off-by: Andrey Konovalov

[PATCH v8 14/43] kasan: decode stack frame only with KASAN_STACK_ENABLE

2020-11-04 Thread Andrey Konovalov
Decoding routines aren't needed when CONFIG_KASAN_STACK_ENABLE is not enabled. Currently only generic KASAN mode implements stack error reporting. No functional changes for software modes. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id

[PATCH v8 27/43] arm64: mte: Add in-kernel MTE helpers

2020-11-04 Thread Andrey Konovalov
-by: Andrey Konovalov Signed-off-by: Andrey Konovalov Reviewed-by: Catalin Marinas --- Change-Id: I1b5230254f90dc21a913447cb17f07fea7944ece --- arch/arm64/include/asm/esr.h | 1 + arch/arm64/include/asm/mte-def.h | 15 arch/arm64/include/asm/mte-kasan.h | 56

[PATCH v8 21/43] kasan: kasan_non_canonical_hook only for software modes

2020-11-04 Thread Andrey Konovalov
-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: Icc9f5ef100a2e86f3a4214a0c3131a68266181b2 --- mm/kasan/report.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mm/kasan/report.c b/mm/kasan/report.c index 5d5733831ad7

[PATCH v8 10/43] kasan: define KASAN_GRANULE_PAGE

2020-11-04 Thread Andrey Konovalov
Define KASAN_GRANULE_PAGE as (KASAN_GRANULE_SIZE << PAGE_SHIFT), which is the same as (KASAN_GRANULE_SIZE * PAGE_SIZE), and use it across KASAN code to simplify it. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Cha

[PATCH v8 17/43] kasan, arm64: move initialization message

2020-11-04 Thread Andrey Konovalov
functions; tag-based mode should use "kasan:" instead of KBUILD_MODNAME (which stands for file name). Signed-off-by: Andrey Konovalov --- Change-Id: Iddca9764b30ff0fab1922f26ca9d4f39b6f22673 --- arch/arm64/include/asm/kasan.h | 9 +++-- arch/arm64/mm/kasan_init.c | 13 +--

[PATCH v8 06/43] kasan: rename (un)poison_shadow to (un)poison_memory

2020-11-04 Thread Andrey Konovalov
. No functional changes. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: Ia359f32815242c4704e49a5f1639ca2d2f8cba69 --- include/linux/kasan.h | 6 +++--- kernel/fork.c | 4 ++-- mm/kasan/common.c | 38

Re: [PATCH v8 38/43] kasan, arm64: implement HW_TAGS runtime

2020-11-04 Thread Andrey Konovalov
On Thu, Nov 5, 2020 at 12:20 AM Andrey Konovalov wrote: > > Provide implementation of KASAN functions required for the hardware > tag-based mode. Those include core functions for memory and pointer > tagging (tags_hw.c) and bug reporting (report_tags_hw.c). Also adapt > co

[PATCH 14/20] kasan, mm: rename kasan_poison_kfree

2020-11-04 Thread Andrey Konovalov
Rename kasan_poison_kfree() to kasan_slab_free_mempool() as it better reflects what this annotation does. No functional changes. Signed-off-by: Andrey Konovalov Reviewed-by: Dmitry Vyukov Link: https://linux-review.googlesource.com/id/I5026f87364e556b506ef1baee725144bb04b8810 --- include

[PATCH 02/20] kasan: rename get_alloc/free_info

2020-11-04 Thread Andrey Konovalov
Rename get_alloc_info() and get_free_info() to kasan_get_alloc_meta() and kasan_get_free_meta() to better reflect what those do and avoid confusion with kasan_set_free_info(). No functional changes. Signed-off-by: Andrey Konovalov Reviewed-by: Dmitry Vyukov Link: https://linux

[PATCH 01/20] kasan: simplify quarantine_put call site

2020-11-04 Thread Andrey Konovalov
Move get_free_info() call into quarantine_put() to simplify the call site. No functional changes. Signed-off-by: Andrey Konovalov Reviewed-by: Dmitry Vyukov Link: https://linux-review.googlesource.com/id/Iab0f04e7ebf8d83247024b7190c67c3c34c7940f --- mm/kasan/common.c | 2 +- mm/kasan

[PATCH 09/20] kasan: inline kasan_poison_memory and check_invalid_free

2020-11-04 Thread Andrey Konovalov
Using kasan_poison_memory() or check_invalid_free() currently results in function calls. Move their definitions to mm/kasan/kasan.h and turn them into static inline functions for hardware tag-based mode to avoid unneeded function calls. Signed-off-by: Andrey Konovalov Reviewed-by: Dmitry Vyukov

[PATCH 07/20] kasan: inline kasan_reset_tag for tag-based modes

2020-11-04 Thread Andrey Konovalov
kasan_reset_tag() instead. Signed-off-by: Andrey Konovalov Link: https://linux-review.googlesource.com/id/I4d2061acfe91d480a75df00b07c22d8494ef14b5 --- include/linux/kasan.h | 5 - mm/kasan/common.c | 6 +++--- mm/kasan/hw_tags.c| 9 ++--- mm/kasan/kasan.h | 4

[PATCH 04/20] kasan, arm64: unpoison stack only with CONFIG_KASAN_STACK

2020-11-04 Thread Andrey Konovalov
is enabled. Note, that CONFIG_KASAN_STACK is an option that is currently always defined when CONFIG_KASAN is enabled, and therefore has to be tested with #if instead of #ifdef. Signed-off-by: Andrey Konovalov Link: https://linux-review.googlesource.com/id

[PATCH 06/20] kasan: remove __kasan_unpoison_stack

2020-11-04 Thread Andrey Konovalov
There's no need for __kasan_unpoison_stack() helper, as it's only currently used in a single place. Removing it also removes unneeded arithmetic. No functional changes. Signed-off-by: Andrey Konovalov Reviewed-by: Dmitry Vyukov Link: https://linux-review.googlesource.com/id

[PATCH 15/20] kasan: don't round_up too much

2020-11-04 Thread Andrey Konovalov
For hardware tag-based mode kasan_poison_memory() already rounds up the size. Do the same for software modes and remove round_up() from the common code. Signed-off-by: Andrey Konovalov Reviewed-by: Dmitry Vyukov Link: https://linux-review.googlesource.com/id

[PATCH 00/20] kasan: boot parameters for hardware tag-based mode

2020-11-04 Thread Andrey Konovalov
on. - Add cpu_supports_mte() helper that can be used during early boot and use it in kasan_init_tags() - Lots of new KASAN optimization commits. Andrey Konovalov (20): kasan: simplify quarantine_put call site kasan: rename get_alloc/free_info kasan: introduce set_alloc_info kasan, arm64:

[PATCH 17/20] kasan: clarify comment in __kasan_kfree_large

2020-11-04 Thread Andrey Konovalov
Currently it says that the memory gets poisoned by page_alloc code. Clarify this by mentioning the specific callback that poisons the memory. Signed-off-by: Andrey Konovalov Reviewed-by: Dmitry Vyukov Link: https://linux-review.googlesource.com/id/I1334dffb69b87d7986fab88a1a039cc3ea764725

[PATCH 08/20] kasan: inline random_tag for HW_TAGS

2020-11-04 Thread Andrey Konovalov
Using random_tag() currently results in a function call. Move its definition to mm/kasan/kasan.h and turn it into a static inline function for hardware tag-based mode to avoid uneeded function calls. Signed-off-by: Andrey Konovalov Link: https://linux-review.googlesource.com/id

[PATCH 18/20] kasan: clean up metadata allocation and usage

2020-11-04 Thread Andrey Konovalov
lue for free_meta_offset, introduce KASAN_NO_FREE_META as an indicator that the free metadata is missing. Along the way rework __kasan_cache_create() and add claryfying comments. Signed-off-by: Andrey Konovalov Link: https://linux-review.googlesource.com/id/Icd947e2bea054cb5cfbdc6cf6652227d97032dcb --- mm/ka

[PATCH 12/20] kasan, mm: check kasan_enabled in annotations

2020-11-04 Thread Andrey Konovalov
Declare the kasan_enabled static key in include/linux/kasan.h and in include/linux/mm.h and check it in all kasan annotations. This allows to avoid any slowdown caused by function calls when kasan_enabled is disabled. Signed-off-by: Andrey Konovalov Link: https://linux-review.googlesource.com

[PATCH 11/20] kasan: add and integrate kasan boot parameters

2020-11-04 Thread Andrey Konovalov
[1]. [1] https://source.android.com/devices/architecture/kernel/generic-kernel-image Signed-off-by: Andrey Konovalov Link: https://linux-review.googlesource.com/id/If7d37003875b2ed3e0935702c8015c223d6416a4 --- mm/kasan/common.c | 22 +-- mm/kasan/hw_tags.c | 144

[PATCH 13/20] kasan: simplify kasan_poison_kfree

2020-11-04 Thread Andrey Konovalov
kasan_poison_kfree() is currently only called for mempool allocations that are backed by either kmem_cache_alloc() or kmalloc(). Therefore, the page passed to kasan_poison_kfree() is always PageSlab() and there's no need to do the check. Remove it. Signed-off-by: Andrey Konovalov Reviewed

[PATCH 20/20] kasan: update documentation

2020-11-04 Thread Andrey Konovalov
This change updates KASAN documentation to reflect the addition of boot parameters and also reworks and clarifies some of the existing sections, in particular: defines what a memory granule is, mentions quarantine, makes Kunit section more readable. Signed-off-by: Andrey Konovalov

[PATCH 05/20] kasan: allow VMAP_STACK for HW_TAGS mode

2020-11-04 Thread Andrey Konovalov
Even though hardware tag-based mode currently doesn't support checking vmalloc allocations, it doesn't use shadow memory and works with VMAP_STACK as is. Change VMAP_STACK definition accordingly. Signed-off-by: Andrey Konovalov Link: https://linux-review.googlesource.com/id

[PATCH 19/20] kasan, mm: allow cache merging with no metadata

2020-11-04 Thread Andrey Konovalov
algorithm and make it friendly to the cache merging code. Instead this change takes a simpler approach and allows merging caches when no metadata is present. Which is the case for hardware tag-based KASAN with kasan.mode=prod. Signed-off-by: Andrey Konovalov Link: https://linux

[PATCH 10/20] kasan: inline and rename kasan_unpoison_memory

2020-11-04 Thread Andrey Konovalov
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

[PATCH 16/20] kasan: simplify assign_tag and set_tag calls

2020-11-04 Thread Andrey Konovalov
set_tag() already ignores the tag for the generic mode, so just call it as is. Add a check for the generic mode to assign_tag(), and simplify its call in kasan_kmalloc(). Signed-off-by: Andrey Konovalov Reviewed-by: Dmitry Vyukov Link: https://linux-review.googlesource.com/id

[PATCH 03/20] kasan: introduce set_alloc_info

2020-11-04 Thread Andrey Konovalov
Add set_alloc_info() helper and move kasan_set_track() into it. This will simplify the code for one of the upcoming changes. No functional changes. Signed-off-by: Andrey Konovalov Reviewed-by: Dmitry Vyukov Link: https://linux-review.googlesource.com/id

Re: [PATCH v8 30/43] arm64: kasan: Allow enabling in-kernel MTE

2020-11-05 Thread Andrey Konovalov
On Thu, Nov 5, 2020 at 12:13 PM Vincenzo Frascino wrote: > > Hi Andrey, > > On 11/4/20 11:18 PM, Andrey Konovalov wrote: > > Hardware tag-based KASAN relies on Memory Tagging Extension (MTE) > > feature and requires it to be enabled. MTE supports > > > >

Re: [PATCH v8 30/43] arm64: kasan: Allow enabling in-kernel MTE

2020-11-05 Thread Andrey Konovalov
On Thu, Nov 5, 2020 at 12:39 PM Vincenzo Frascino wrote: > > On 11/5/20 11:35 AM, Andrey Konovalov wrote: > > This will work. Any preference on the name of this function? > > > > I called it in my current iteration mte_enable(), and calling it from > cpu_enable_mte().

[PATCH v2] kcov, usbip: collect coverage from vhci_rx_loop

2020-10-12 Thread Andrey Konovalov
From: Nazime Hande Harputluoglu Add kcov_remote_start()/kcov_remote_stop() annotations to the vhci_rx_loop() function, which is responsible for parsing USB/IP packets coming into USB/IP client. Since vhci_rx_loop() threads are spawned per vhci_hcd device instance, the common kcov handle is used

[PATCH v4] kcov, usb: specify contexts for remote coverage sections

2020-10-12 Thread Andrey Konovalov
() calls won't be collected, but the WARNING is fixed. A potential future improvement would be to support nested remote coverage collection sections, but this patch doesn't address that. Signed-off-by: Andrey Konovalov Acked-by: Marco Elver --- Changes v3->v4: - Drop unnecessary returns from k

[PATCH v5 01/40] arm64: Enable armv8.5-a asm-arch option

2020-10-12 Thread Andrey Konovalov
Frascino Signed-off-by: Andrey Konovalov Reviewed-by: Catalin Marinas --- Change-Id: I172e15e4c189f073e4c14a10276b276092e76536 --- arch/arm64/Kconfig | 4 arch/arm64/Makefile | 5 + 2 files changed, 9 insertions(+) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index e7450fbd0aa7

[PATCH v5 05/40] arm64: mte: Add in-kernel tag fault handler

2020-10-12 Thread Andrey Konovalov
fault handler for kernel addresses is currently empty and will be filled in by a future commit. Signed-off-by: Vincenzo Frascino Co-developed-by: Andrey Konovalov Signed-off-by: Andrey Konovalov Reviewed-by: Catalin Marinas --- Change-Id: I9b8aa79567f7c45f4d6a1290efcf34567e620717 --- arch/arm64

[PATCH v5 09/40] arm64: kasan: Align allocations for HW_TAGS

2020-10-12 Thread Andrey Konovalov
Hardware tag-based KASAN uses the memory tagging approach, which requires all allocations to be aligned to the memory granule size. Align the allocations to MTE_GRANULE_SIZE via ARCH_SLAB_MINALIGN when CONFIG_KASAN_HW_TAGS is enabled. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo

[PATCH v5 13/40] kasan: shadow declarations only for software modes

2020-10-12 Thread Andrey Konovalov
This is a preparatory commit for the upcoming addition of a new hardware tag-based (MTE-based) KASAN mode. Group shadow-related KASAN function declarations and only define them for the two existing software modes. No functional changes for software modes. Signed-off-by: Andrey Konovalov Signed

[PATCH v5 16/40] kasan: only build init.c for software modes

2020-10-12 Thread Andrey Konovalov
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, so only build init.c that contains shadow initialization code for software modes. No functional changes for software modes. Signed-off-by: Andrey

[PATCH v5 02/40] arm64: mte: Add in-kernel MTE helpers

2020-10-12 Thread Andrey Konovalov
-by: Andrey Konovalov Signed-off-by: Andrey Konovalov Reviewed-by: Catalin Marinas --- Change-Id: I1b5230254f90dc21a913447cb17f07fea7944ece --- arch/arm64/include/asm/esr.h | 1 + arch/arm64/include/asm/mte-def.h | 15 arch/arm64/include/asm/mte-kasan.h | 56

[PATCH v5 17/40] kasan: split out shadow.c from common.c

2020-10-12 Thread Andrey Konovalov
for software modes. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: Ic1c32ce72d4649848e9e6a1f2c8dd269c77673f2 --- mm/kasan/Makefile | 6 +- mm/kasan/common.c | 486 +--- mm/kasan/shadow.c | 505

[PATCH v5 06/40] arm64: kasan: Enable in-kernel MTE

2020-10-12 Thread Andrey Konovalov
in a page. Note: For MTE, the TCF bit field in SCTLR_EL1 affects only EL1 in a similar way as TCF0 affects EL0. MTE that is built on top of the Top Byte Ignore (TBI) feature hence we enable it as part of this patch as well. Signed-off-by: Vincenzo Frascino Signed-off-by: Andrey Konovalov Reviewed

[PATCH v5 00/40] kasan: add hardware tag-based mode for arm64

2020-10-12 Thread Andrey Konovalov
p stale comment about callee-saved register from arch/arm64/kernel/entry.S. - Mark gcr_kernel_excl as __ro_after_init. - Use GENMASK() in mte_init_tags(). Andrey Konovalov (32): arm64: kasan: Add arch layer for memory tagging helpers arm64: kasan: Align allocations for HW_TAGS kasan:

[PATCH v5 22/40] kasan: decode stack frame only with KASAN_STACK_ENABLE

2020-10-12 Thread Andrey Konovalov
Decoding routines aren't needed when CONFIG_KASAN_STACK_ENABLE is not enabled. Currently only generic KASAN mode implements stack error reporting. No functional changes for software modes. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id

[PATCH v5 20/40] kasan: don't duplicate config dependencies

2020-10-12 Thread Andrey Konovalov
Both KASAN_GENERIC and KASAN_SW_TAGS have common dependencies, move those to KASAN. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: I77e475802e8f1750b9154fe4a6e6da4456054fcd --- lib/Kconfig.kasan | 8 ++-- 1 file changed, 2

[PATCH v5 11/40] kasan: KASAN_VMALLOC depends on KASAN_GENERIC

2020-10-12 Thread Andrey Konovalov
Currently only generic KASAN mode supports vmalloc, reflect that in the config. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: I1889e5b3bed28cc5d607802fb6ae43ba461c0dc1 --- lib/Kconfig.kasan | 2 +- 1 file changed, 1 insertion(+), 1

[PATCH v5 07/40] arm64: mte: Convert gcr_user into an exclude mask

2020-10-12 Thread Andrey Konovalov
-by: Andrey Konovalov Reviewed-by: Catalin Marinas --- Change-Id: Id15c0b47582fb51594bb26fb8353d78c7d0953c1 --- arch/arm64/include/asm/processor.h | 2 +- arch/arm64/kernel/mte.c| 29 +++-- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/arch

[PATCH v5 08/40] arm64: mte: Switch GCR_EL1 in kernel entry and exit

2020-10-12 Thread Andrey Konovalov
implementation has to make sure that the GCR_EL1 setting for the kernel does not affect the userspace processes and viceversa. Save and restore the kernel/user mask in GCR_EL1 in kernel entry and exit. Signed-off-by: Vincenzo Frascino Signed-off-by: Andrey Konovalov Reviewed-by: Catalin Marinas

[PATCH v5 23/40] kasan, arm64: only init shadow for software modes

2020-10-12 Thread Andrey Konovalov
This is a preparatory commit for the upcoming addition of a new hardware tag-based (MTE-based) KASAN mode. Hardware tag-based KASAN won't be using shadow memory. Only initialize it when one of the software KASAN modes are enabled. No functional changes for software modes. Signed-off-by: Andrey

[PATCH v5 12/40] kasan: group vmalloc code

2020-10-12 Thread Andrey Konovalov
This is a preparatory commit for the upcoming addition of a new hardware tag-based (MTE-based) KASAN mode. Group all vmalloc-related function declarations in include/linux/kasan.h, and their implementations in mm/kasan/common.c. No functional changes. Signed-off-by: Andrey Konovalov Signed-off

[PATCH v5 19/40] kasan: rename report and tags files

2020-10-12 Thread Andrey Konovalov
Rename generic_report.c to report_generic.c and tags_report.c to report_sw_tags.c, as their content is more relevant to report.c file. Also rename tags.c to sw_tags.c to better reflect that this file contains code for software tag-based mode. No functional changes. Signed-off-by: Andrey

[PATCH v5 18/40] kasan: define KASAN_GRANULE_PAGE

2020-10-12 Thread Andrey Konovalov
Define KASAN_GRANULE_PAGE as (KASAN_GRANULE_SIZE << PAGE_SHIFT), which is the same as (KASAN_GRANULE_SIZE * PAGE_SIZE), and use it across KASAN code to simplify it. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Cha

[PATCH v5 10/40] kasan: drop unnecessary GPL text from comment headers

2020-10-12 Thread Andrey Konovalov
Don't mention "GNU General Public License version 2" text explicitly, as it's already covered by the SPDX-License-Identifier. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: If0a2690042a2aa0fca70cea601ae9aabe72fa233 ---

[PATCH v5 04/40] arm64: kasan: Add arch layer for memory tagging helpers

2020-10-12 Thread Andrey Konovalov
-based KASAN support for other architectures in the future by defining the appropriate arch_*() macros. Signed-off-by: Andrey Konovalov Co-developed-by: Vincenzo Frascino Signed-off-by: Vincenzo Frascino Reviewed-by: Catalin Marinas --- Change-Id: I42b0795a28067872f8308e00c6f0195bca435c2a

[PATCH v5 14/40] kasan: rename (un)poison_shadow to (un)poison_memory

2020-10-12 Thread Andrey Konovalov
. No functional changes. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: Ia359f32815242c4704e49a5f1639ca2d2f8cba69 --- include/linux/kasan.h | 6 +++--- kernel/fork.c | 4 ++-- mm/kasan/common.c | 38

[PATCH v5 21/40] kasan: hide invalid free check implementation

2020-10-12 Thread Andrey Konovalov
(). Also simplify the code for software tag-based mode. No functional changes for software modes. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: I5fae9531c9fc948eb4d4e0c589744032fc5a0789 --- mm/kasan/common.c | 19

[PATCH v5 03/40] arm64: mte: Reset the page tag in page->flags

2020-10-12 Thread Andrey Konovalov
aps the same with PROT_MTE and becomes tagged the subsequent kernel access would fail. Signed-off-by: Vincenzo Frascino Signed-off-by: Andrey Konovalov --- Change-Id: I8451d438bb63364de2a3e68041e3a27866921d4e --- arch/arm64/kernel/mte.c | 1 + arch/arm64/mm/copypage.c | 1 + arch/arm64/mm/mteswa

[PATCH v5 15/40] kasan: rename KASAN_SHADOW_* to KASAN_GRANULE_*

2020-10-12 Thread Andrey Konovalov
changes. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: Iac733e2248aa9d29f6fc425d8946ba07cca73ecf --- Documentation/dev-tools/kasan.rst | 2 +- lib/test_kasan.c | 2 +- mm/kasan/common.c | 39

[PATCH v5 33/40] kasan, x86, s390: update undef CONFIG_KASAN

2020-10-12 Thread Andrey Konovalov
runtime and shouldn't have any KASAN annotations. Also #undef CONFIG_KASAN_GENERIC with CONFIG_KASAN. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: I2a622db0cb86a8feb60c30d8cb09190075be2a90 --- arch/s390/boot/string.c | 1 + arch

[PATCH v5 36/40] kasan, arm64: print report from tag fault handler

2020-10-12 Thread Andrey Konovalov
code to handle this case. Signed-off-by: Andrey Konovalov Co-developed-by: Vincenzo Frascino Signed-off-by: Vincenzo Frascino Reviewed-by: Catalin Marinas --- Change-Id: I3780fe7db6e075dff2937d3d8508f55c9322b095 --- arch/arm64/mm/fault.c | 14 ++ mm/kasan/report.c | 11

[PATCH v5 39/40] kasan: add documentation for hardware tag-based mode

2020-10-12 Thread Andrey Konovalov
Add documentation for hardware tag-based KASAN mode and also add some clarifications for software tag-based mode. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: Ib46cb444cfdee44054628940a82f5139e10d0258 --- Documentation/dev-tools

[PATCH v5 24/40] kasan, arm64: only use kasan_depth for software modes

2020-10-12 Thread Andrey Konovalov
This is a preparatory commit for the upcoming addition of a new hardware tag-based (MTE-based) KASAN mode. Hardware tag-based KASAN won't use kasan_depth. Only define and use it when one of the software KASAN modes are enabled. No functional changes for software modes. Signed-off-by: Andrey

[PATCH v5 32/40] kasan: define KASAN_GRANULE_SIZE for HW_TAGS

2020-10-12 Thread Andrey Konovalov
Hardware tag-based KASAN has granules of MTE_GRANULE_SIZE. Define KASAN_GRANULE_SIZE to MTE_GRANULE_SIZE for CONFIG_KASAN_HW_TAGS. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: I5d1117e6a991cbca00d2cfb4ba66e8ae2d8f513a --- mm/kasan

[PATCH v5 28/40] kasan: rename SHADOW layout macros to META

2020-10-12 Thread Andrey Konovalov
This is a preparatory commit for the upcoming addition of a new hardware tag-based (MTE-based) KASAN mode. Hardware tag-based KASAN won't be using shadow memory, but will reuse these macros. Rename "SHADOW" to implementation-neutral "META". No functional changes. Signed-off-

[PATCH v5 38/40] kasan, arm64: enable CONFIG_KASAN_HW_TAGS

2020-10-12 Thread Andrey Konovalov
Hardware tag-based KASAN is now ready, enable the configuration option. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Acked-by: Catalin Marinas --- Change-Id: I6eb1eea770e6b61ad71c701231b8d815a7ccc853 --- arch/arm64/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git

[PATCH v5 29/40] kasan: separate metadata_fetch_row for each mode

2020-10-12 Thread Andrey Konovalov
-based KASAN will provide its own implementation that doesn't use shadow memory. No functional changes for software modes. Signed-off-by: Andrey Konovalov Signed-off-by: Vincenzo Frascino Reviewed-by: Marco Elver --- Change-Id: I5b0ed1d079ea776e620beca6a529a861e7dced95 --- mm/kasan/kasan.h

<    11   12   13   14   15   16   17   18   19   20   >