From: Marco Elver <elver@google.com>
To: Andrey Konovalov <andreyknvl@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Alexander Potapenko <glider@google.com>,
Andrey Ryabinin <aryabinin@virtuozzo.com>,
Dmitry Vyukov <dvyukov@google.com>,
kasan-dev@googlegroups.com, linux-mm@kvack.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 06/11] kasan: docs: update GENERIC implementation details section
Date: Fri, 12 Mar 2021 16:08:55 +0100 [thread overview]
Message-ID: <YEuEB3IhoXdixgiP@elver.google.com> (raw)
In-Reply-To: <f2f35fdab701f8c709f63d328f98aec2982c8acc.1615559068.git.andreyknvl@google.com>
On Fri, Mar 12, 2021 at 03:24PM +0100, Andrey Konovalov wrote:
> Update the "Implementation details" section for generic KASAN:
>
> - Don't mention kmemcheck, it's not present in the kernel anymore.
> - Don't mention GCC as the only supported compiler.
> - Update kasan_mem_to_shadow() definition to match actual code.
> - Punctuation, readability, and other minor clean-ups.
>
> Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
Reviewed-by: Marco Elver <elver@google.com>
> ---
> Documentation/dev-tools/kasan.rst | 27 +++++++++++++--------------
> 1 file changed, 13 insertions(+), 14 deletions(-)
>
> diff --git a/Documentation/dev-tools/kasan.rst b/Documentation/dev-tools/kasan.rst
> index 1189be9b4cb5..986410bf269f 100644
> --- a/Documentation/dev-tools/kasan.rst
> +++ b/Documentation/dev-tools/kasan.rst
> @@ -200,12 +200,11 @@ Implementation details
> Generic KASAN
> ~~~~~~~~~~~~~
>
> -From a high level perspective, KASAN's approach to memory error detection is
> -similar to that of kmemcheck: use shadow memory to record whether each byte of
> -memory is safe to access, and use compile-time instrumentation to insert checks
> -of shadow memory on each memory access.
> +Software KASAN modes use shadow memory to record whether each byte of memory is
> +safe to access and use compile-time instrumentation to insert shadow memory
> +checks before each memory access.
>
> -Generic KASAN dedicates 1/8th of kernel memory to its shadow memory (e.g. 16TB
> +Generic KASAN dedicates 1/8th of kernel memory to its shadow memory (16TB
> to cover 128TB on x86_64) and uses direct mapping with a scale and offset to
> translate a memory address to its corresponding shadow address.
>
> @@ -214,23 +213,23 @@ address::
>
> static inline void *kasan_mem_to_shadow(const void *addr)
> {
> - return ((unsigned long)addr >> KASAN_SHADOW_SCALE_SHIFT)
> + return (void *)((unsigned long)addr >> KASAN_SHADOW_SCALE_SHIFT)
> + KASAN_SHADOW_OFFSET;
> }
>
> where ``KASAN_SHADOW_SCALE_SHIFT = 3``.
>
> Compile-time instrumentation is used to insert memory access checks. Compiler
> -inserts function calls (__asan_load*(addr), __asan_store*(addr)) before each
> -memory access of size 1, 2, 4, 8 or 16. These functions check whether memory
> -access is valid or not by checking corresponding shadow memory.
> +inserts function calls (``__asan_load*(addr)``, ``__asan_store*(addr)``) before
> +each memory access of size 1, 2, 4, 8, or 16. These functions check whether
> +memory accesses are valid or not by checking corresponding shadow memory.
>
> -GCC 5.0 has possibility to perform inline instrumentation. Instead of making
> -function calls GCC directly inserts the code to check the shadow memory.
> -This option significantly enlarges kernel but it gives x1.1-x2 performance
> -boost over outline instrumented kernel.
> +With inline instrumentation, instead of making function calls, the compiler
> +directly inserts the code to check shadow memory. This option significantly
> +enlarges the kernel, but it gives an x1.1-x2 performance boost over the
> +outline-instrumented kernel.
>
> -Generic KASAN is the only mode that delays the reuse of freed object via
> +Generic KASAN is the only mode that delays the reuse of freed objects via
> quarantine (see mm/kasan/quarantine.c for implementation).
>
> Software tag-based KASAN
> --
> 2.31.0.rc2.261.g7f71774620-goog
>
next prev parent reply other threads:[~2021-03-12 15:09 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-12 14:24 [PATCH v2 01/11] kasan: docs: clean up sections Andrey Konovalov
2021-03-12 14:24 ` [PATCH v2 02/11] kasan: docs: update overview section Andrey Konovalov
2021-03-12 15:07 ` Marco Elver
2021-03-12 14:24 ` [PATCH v2 03/11] kasan: docs: update usage section Andrey Konovalov
2021-03-12 15:07 ` Marco Elver
2021-03-12 14:24 ` [PATCH v2 04/11] kasan: docs: update error reports section Andrey Konovalov
2021-03-12 15:08 ` Marco Elver
2021-03-12 14:24 ` [PATCH v2 05/11] kasan: docs: update boot parameters section Andrey Konovalov
2021-03-12 15:08 ` Marco Elver
2021-03-12 14:24 ` [PATCH v2 06/11] kasan: docs: update GENERIC implementation details section Andrey Konovalov
2021-03-12 15:08 ` Marco Elver [this message]
2021-03-12 14:24 ` [PATCH v2 07/11] kasan: docs: update SW_TAGS " Andrey Konovalov
2021-03-12 15:09 ` Marco Elver
2021-03-12 14:24 ` [PATCH v2 08/11] kasan: docs: update HW_TAGS " Andrey Konovalov
2021-03-12 15:09 ` Marco Elver
2021-03-12 14:24 ` [PATCH v2 09/11] kasan: docs: update shadow memory section Andrey Konovalov
2021-03-12 15:09 ` Marco Elver
2021-03-12 14:24 ` [PATCH v2 10/11] kasan: docs: update ignoring accesses section Andrey Konovalov
2021-03-12 15:10 ` Marco Elver
2021-03-12 14:24 ` [PATCH v2 11/11] kasan: docs: update tests section Andrey Konovalov
2021-03-12 15:11 ` Marco Elver
2021-03-12 15:06 ` [PATCH v2 01/11] kasan: docs: clean up sections Marco Elver
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=YEuEB3IhoXdixgiP@elver.google.com \
--to=elver@google.com \
--cc=akpm@linux-foundation.org \
--cc=andreyknvl@google.com \
--cc=aryabinin@virtuozzo.com \
--cc=dvyukov@google.com \
--cc=glider@google.com \
--cc=kasan-dev@googlegroups.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
/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.