All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrey Konovalov <andreyknvl@google.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>,
	Alexander Potapenko <glider@google.com>,
	Dmitry Vyukov <dvyukov@google.com>,
	Marco Elver <elver@google.com>, Ard Biesheuvel <ardb@kernel.org>,
	Arvind Sankar <nivedita@alum.mit.edu>,
	kasan-dev@googlegroups.com, linux-mm@kvack.org,
	linux-efi@vger.kernel.org, linux-kernel@vger.kernel.org,
	Walter Wu <walter-zh.wu@mediatek.com>,
	Elena Petrova <lenaptr@google.com>,
	Vincenzo Frascino <vincenzo.frascino@arm.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Andrey Konovalov <andreyknvl@google.com>
Subject: [PATCH v2 3/5] kasan, arm64: don't instrument functions that enable kasan
Date: Tue,  4 Aug 2020 14:41:26 +0200	[thread overview]
Message-ID: <26fb6165a17abcf61222eda5184c030fb6b133d1.1596544734.git.andreyknvl@google.com> (raw)
In-Reply-To: <cover.1596544734.git.andreyknvl@google.com>

This patch prepares Software Tag-Based KASAN for stack tagging support.

With stack tagging enabled, KASAN tags stack variable in each function
in its prologue. In start_kernel() stack variables get tagged before KASAN
is enabled via setup_arch()->kasan_init(). As the result the tags for
start_kernel()'s stack variables end up in the temporary shadow memory.
Later when KASAN gets enabled, switched to normal shadow, and starts
checking tags, this leads to false-positive reports, as proper tags are
missing in normal shadow.

Disable KASAN instrumentation for start_kernel(). Also disable it for
arm64's setup_arch() as a precaution (it doesn't have any stack variables
right now).

Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
---
 arch/arm64/kernel/setup.c | 2 +-
 init/main.c               | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
index 93b3844cf442..575da075a2b9 100644
--- a/arch/arm64/kernel/setup.c
+++ b/arch/arm64/kernel/setup.c
@@ -276,7 +276,7 @@ arch_initcall(reserve_memblock_reserved_regions);
 
 u64 __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = INVALID_HWID };
 
-void __init setup_arch(char **cmdline_p)
+void __init __no_sanitize_address setup_arch(char **cmdline_p)
 {
 	init_mm.start_code = (unsigned long) _text;
 	init_mm.end_code   = (unsigned long) _etext;
diff --git a/init/main.c b/init/main.c
index 0ead83e86b5a..7e5e25d9fe42 100644
--- a/init/main.c
+++ b/init/main.c
@@ -827,7 +827,7 @@ void __init __weak arch_call_rest_init(void)
 	rest_init();
 }
 
-asmlinkage __visible void __init start_kernel(void)
+asmlinkage __visible void __init __no_sanitize_address start_kernel(void)
 {
 	char *command_line;
 	char *after_dashes;
-- 
2.28.0.163.g6104cc2f0b6-goog


  parent reply	other threads:[~2020-08-04 12:42 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-04 12:41 [PATCH v2 0/5] kasan: support stack instrumentation for tag-based mode Andrey Konovalov
2020-08-04 12:41 ` Andrey Konovalov
2020-08-04 12:41 ` [PATCH v2 1/5] kasan: don't tag stacks allocated with pagealloc Andrey Konovalov
2020-08-04 12:41   ` Andrey Konovalov
2020-08-04 12:41 ` [PATCH v2 2/5] efi: provide empty efi_enter_virtual_mode implementation Andrey Konovalov
2020-08-04 12:41   ` Andrey Konovalov
2020-08-04 12:45   ` Ard Biesheuvel
2020-08-04 12:45     ` Ard Biesheuvel
2020-08-04 12:41 ` Andrey Konovalov [this message]
2020-08-04 12:41   ` [PATCH v2 3/5] kasan, arm64: don't instrument functions that enable kasan Andrey Konovalov
2020-08-04 13:19   ` Catalin Marinas
2020-08-04 13:24     ` Andrey Konovalov
2020-08-04 13:24       ` Andrey Konovalov
2020-08-04 12:41 ` [PATCH v2 4/5] kasan: allow enabling stack tagging for tag-based mode Andrey Konovalov
2020-08-04 12:41   ` Andrey Konovalov
2020-08-04 12:41 ` [PATCH v2 5/5] kasan: adjust kasan_stack_oob " Andrey Konovalov
2020-08-04 12:41   ` 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=26fb6165a17abcf61222eda5184c030fb6b133d1.1596544734.git.andreyknvl@google.com \
    --to=andreyknvl@google.com \
    --cc=akpm@linux-foundation.org \
    --cc=ardb@kernel.org \
    --cc=aryabinin@virtuozzo.com \
    --cc=catalin.marinas@arm.com \
    --cc=dvyukov@google.com \
    --cc=elver@google.com \
    --cc=glider@google.com \
    --cc=kasan-dev@googlegroups.com \
    --cc=lenaptr@google.com \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=nivedita@alum.mit.edu \
    --cc=vincenzo.frascino@arm.com \
    --cc=walter-zh.wu@mediatek.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.