All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: glittao@gmail.com
Cc: brendanhiggins@google.com, cl@linux.com, penberg@kernel.org,
	rientjes@google.com, iamjoonsoo.kim@lge.com, vbabka@suse.cz,
	linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org,
	kunit-dev@googlegroups.com, linux-mm@kvack.org, elver@google.com,
	dlatypov@google.com
Subject: Re: [PATCH v5 2/3] mm/slub, kunit: add a KUnit test for SLUB debugging functionality
Date: Wed, 12 May 2021 21:44:40 -0700	[thread overview]
Message-ID: <20210512214440.e2cb47f751137db9802da62e@linux-foundation.org> (raw)
In-Reply-To: <20210511150734.3492-2-glittao@gmail.com>

On Tue, 11 May 2021 17:07:33 +0200 glittao@gmail.com wrote:

> From: Oliver Glitta <glittao@gmail.com>
> 
> SLUB has resiliency_test() function which is hidden behind #ifdef
> SLUB_RESILIENCY_TEST that is not part of Kconfig, so nobody
> runs it. KUnit should be a proper replacement for it.
> 
> Try changing byte in redzone after allocation and changing
> pointer to next free node, first byte, 50th byte and redzone
> byte. Check if validation finds errors.
> 
> There are several differences from the original resiliency test:
> Tests create own caches with known state instead of corrupting
> shared kmalloc caches.
> 
> The corruption of freepointer uses correct offset, the original
> resiliency test got broken with freepointer changes.
> 
> Scratch changing random byte test, because it does not have
> meaning in this form where we need deterministic results.
> 
> Add new option CONFIG_SLUB_KUNIT_TEST in Kconfig.
> Tests next_pointer, first_word and clobber_50th_byte do not run
> with KASAN option on. Because the test deliberately modifies non-allocated
> objects.
> 
> Use kunit_resource to count errors in cache and silence bug reports.
> Count error whenever slab_bug() or slab_fix() is called or when
> the count of pages is wrong.
> 
> ...
>
>  lib/slub_kunit.c  | 155 ++++++++++++++++++++++++++++++++++++++++++++++
>  mm/slab.h         |   1 +
>  mm/slub.c         |  46 +++++++++++++-
>  5 files changed, 212 insertions(+), 3 deletions(-)
>  create mode 100644 lib/slub_kunit.c
> 
> diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
> index 678c13967580..7723f58a9394 100644
> --- a/lib/Kconfig.debug
> +++ b/lib/Kconfig.debug
> @@ -2429,6 +2429,18 @@ config BITS_TEST
> 
>  	  If unsure, say N.
> 
> +config SLUB_KUNIT_TEST
> +	tristate "KUnit test for SLUB cache error detection" if !KUNIT_ALL_TESTS

This means it can be compiled as a kernel module.  Did you runtime test the
code as a module?

ERROR: modpost: "kasan_enable_current" [lib/slub_kunit.ko] undefined!
ERROR: modpost: "kasan_disable_current" [lib/slub_kunit.ko] undefined!

--- a/mm/kasan/common.c~a
+++ a/mm/kasan/common.c
@@ -51,11 +51,14 @@ void kasan_enable_current(void)
 {
 	current->kasan_depth++;
 }
+EXPORT_SYMBOL(kasan_enable_current);
 
 void kasan_disable_current(void)
 {
 	current->kasan_depth--;
 }
+EXPORT_SYMBOL(kasan_disable_current);
+
 #endif /* CONFIG_KASAN_GENERIC || CONFIG_KASAN_SW_TAGS */
 
 void __kasan_unpoison_range(const void *address, size_t size)
_


  parent reply	other threads:[~2021-05-13  4:44 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-11 15:07 [PATCH v5 1/3] kunit: make test->lock irq safe glittao
2021-05-11 15:07 ` [PATCH v5 2/3] mm/slub, kunit: add a KUnit test for SLUB debugging functionality glittao
2021-05-11 15:16   ` Marco Elver
2021-05-11 15:16     ` Marco Elver
2021-05-12 10:30     ` Vlastimil Babka
2021-05-12 10:30       ` Vlastimil Babka
2021-05-12 12:24     ` Oliver Glitta
2021-05-12 14:06   ` [PATCH] mm/slub, kunit: add a KUnit test for SLUB debugging functionality-fix glittao
2021-05-13  4:44   ` Andrew Morton [this message]
2021-05-13  8:54     ` [PATCH v5 2/3] mm/slub, kunit: add a KUnit test for SLUB debugging functionality Marco Elver
2021-05-13  8:54       ` Marco Elver
2021-05-13  9:32     ` Oliver Glitta
2021-05-13  9:32       ` Oliver Glitta
2021-05-11 15:07 ` [PATCH v5 3/3] slub: remove resiliency_test() function glittao
2021-05-12 10:28 ` [PATCH v5 1/3] kunit: make test->lock irq safe Vlastimil Babka

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=20210512214440.e2cb47f751137db9802da62e@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=brendanhiggins@google.com \
    --cc=cl@linux.com \
    --cc=dlatypov@google.com \
    --cc=elver@google.com \
    --cc=glittao@gmail.com \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=kunit-dev@googlegroups.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=penberg@kernel.org \
    --cc=rientjes@google.com \
    --cc=vbabka@suse.cz \
    /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.