All of lore.kernel.org
 help / color / mirror / Atom feed
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 04/11] kasan: docs: update error reports section
Date: Fri, 12 Mar 2021 16:08:04 +0100	[thread overview]
Message-ID: <YEuD1Ghn+5bf0TJO@elver.google.com> (raw)
In-Reply-To: <3531e8fe6972cf39d1954e3643237b19eb21227e.1615559068.git.andreyknvl@google.com>

On Fri, Mar 12, 2021 at 03:24PM +0100, Andrey Konovalov wrote:
> Update the "Error reports" section in KASAN documentation:
> 
> - Mention that bug titles are best-effort.
> - Move and reword the part about auxiliary stacks from
>   "Implementation details".
> - 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 | 46 +++++++++++++++++--------------
>  1 file changed, 26 insertions(+), 20 deletions(-)
> 
> diff --git a/Documentation/dev-tools/kasan.rst b/Documentation/dev-tools/kasan.rst
> index 46f4e9680805..cd12c890b888 100644
> --- a/Documentation/dev-tools/kasan.rst
> +++ b/Documentation/dev-tools/kasan.rst
> @@ -60,7 +60,7 @@ physical pages, enable ``CONFIG_PAGE_OWNER`` and boot with ``page_owner=on``.
>  Error reports
>  ~~~~~~~~~~~~~
>  
> -A typical out-of-bounds access generic KASAN report looks like this::
> +A typical KASAN report looks like this::
>  
>      ==================================================================
>      BUG: KASAN: slab-out-of-bounds in kmalloc_oob_right+0xa8/0xbc [test_kasan]
> @@ -133,33 +133,43 @@ A typical out-of-bounds access generic KASAN report looks like this::
>       ffff8801f44ec400: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
>      ==================================================================
>  
> -The header of the report provides a short summary of what kind of bug happened
> -and what kind of access caused it. It's followed by a stack trace of the bad
> -access, a stack trace of where the accessed memory was allocated (in case bad
> -access happens on a slab object), and a stack trace of where the object was
> -freed (in case of a use-after-free bug report). Next comes a description of
> -the accessed slab object and information about the accessed memory page.
> +The report header summarizes what kind of bug happened and what kind of access
> +caused it. It is followed by a stack trace of the bad access, a stack trace of
> +where the accessed memory was allocated (in case a slab object was accessed),
> +and a stack trace of where the object was freed (in case of a use-after-free
> +bug report). Next comes a description of the accessed slab object and the
> +information about the accessed memory page.
>  
> -In the last section the report shows memory state around the accessed address.
> -Internally KASAN tracks memory state separately for each memory granule, which
> +In the end, the report shows the memory state around the accessed address.
> +Internally, KASAN tracks memory state separately for each memory granule, which
>  is either 8 or 16 aligned bytes depending on KASAN mode. Each number in the
>  memory state section of the report shows the state of one of the memory
>  granules that surround the accessed address.
>  
> -For generic KASAN the size of each memory granule is 8. The state of each
> +For generic KASAN, the size of each memory granule is 8. The state of each
>  granule is encoded in one shadow byte. Those 8 bytes can be accessible,
> -partially accessible, freed or be a part of a redzone. KASAN uses the following
> -encoding for each shadow byte: 0 means that all 8 bytes of the corresponding
> +partially accessible, freed, or be a part of a redzone. KASAN uses the following
> +encoding for each shadow byte: 00 means that all 8 bytes of the corresponding
>  memory region are accessible; number N (1 <= N <= 7) means that the first N
>  bytes are accessible, and other (8 - N) bytes are not; any negative value
>  indicates that the entire 8-byte word is inaccessible. KASAN uses different
>  negative values to distinguish between different kinds of inaccessible memory
>  like redzones or freed memory (see mm/kasan/kasan.h).
>  
> -In the report above the arrows point to the shadow byte 03, which means that
> -the accessed address is partially accessible. For tag-based KASAN modes this
> -last report section shows the memory tags around the accessed address
> -(see the `Implementation details`_ section).
> +In the report above, the arrow points to the shadow byte ``03``, which means
> +that the accessed address is partially accessible.
> +
> +For tag-based KASAN modes, this last report section shows the memory tags around
> +the accessed address (see the `Implementation details`_ section).
> +
> +Note that KASAN bug titles (like ``slab-out-of-bounds`` or ``use-after-free``)
> +are best-effort: KASAN prints the most probable bug type based on the limited
> +information it has. The actual type of the bug might be different.
> +
> +Generic KASAN also reports up to two auxiliary call stack traces. These stack
> +traces point to places in code that interacted with the object but that are not
> +directly present in the bad access stack trace. Currently, this includes
> +call_rcu() and workqueue queuing.
>  
>  Boot parameters
>  ~~~~~~~~~~~~~~~
> @@ -214,10 +224,6 @@ 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.
>  
> -Generic KASAN also reports the last 2 call stacks to creation of work that
> -potentially has access to an object. Call stacks for the following are shown:
> -call_rcu() and workqueue queuing.
> -
>  Generic KASAN is the only mode that delays the reuse of freed object via
>  quarantine (see mm/kasan/quarantine.c for implementation).
>  
> -- 
> 2.31.0.rc2.261.g7f71774620-goog
> 


  reply	other threads:[~2021-03-12 15:08 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 [this message]
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
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=YEuD1Ghn+5bf0TJO@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.