On 10/25/22 09:19, David Gow wrote: > Use the newly-added function kunit_get_current_test() instead of > accessing current->kunit_test directly. This function uses a static key > to return more quickly when KUnit is enabled, but no tests are actively > running. There should therefore be a negligible performance impact to > enabling the slub KUnit tests. > > Other than the performance improvement, this should be a no-op. > > Cc: Oliver Glitta <glittao@xxxxxxxxx> > Cc: Hyeonggon Yoo <42.hyeyoo@xxxxxxxxx> > Cc: Christoph Lameter <cl@xxxxxxxxx> > Cc: Vlastimil Babka <vbabka@xxxxxxx> > Cc: David Rientjes <rientjes@xxxxxxxxxx> > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Signed-off-by: David Gow <davidgow@xxxxxxxxxx> Acked-by: Vlastimil Babka <vbabka@xxxxxxx> > --- > > This is intended as an example use of the new function. Other users > (such as KASAN) will be updated separately, as there would otherwise be > conflicts. > > Assuming there are no objections, we'll take this whole series via the > kselftest/kunit tree. OK, please do. Some possible improvements below: > There was no v1 of this patch. v1 of the series can be found here: > https://lore.kernel.org/linux-kselftest/20221021072854.333010-1-davidgow@xxxxxxxxxx/T/#u > > --- > lib/slub_kunit.c | 1 + > mm/slub.c | 5 +++-- > 2 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/lib/slub_kunit.c b/lib/slub_kunit.c > index 7a0564d7cb7a..8fd19c8301ad 100644 > --- a/lib/slub_kunit.c > +++ b/lib/slub_kunit.c > @@ -1,5 +1,6 @@ > // SPDX-License-Identifier: GPL-2.0 > #include <kunit/test.h> > +#include <kunit/test-bug.h> > #include <linux/mm.h> > #include <linux/slab.h> > #include <linux/module.h> > diff --git a/mm/slub.c b/mm/slub.c > index 157527d7101b..15d10d250ef2 100644 > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -39,6 +39,7 @@ > #include <linux/memcontrol.h> > #include <linux/random.h> > #include <kunit/test.h> > +#include <kunit/test-bug.h> > #include <linux/sort.h> > > #include <linux/debugfs.h> > @@ -603,10 +604,10 @@ static bool slab_add_kunit_errors(void) > { > struct kunit_resource *resource; > > - if (likely(!current->kunit_test)) > + if (likely(!kunit_get_current_test())) Given that kunit_get_current_test() is basically an inline !static_branch_unlikely(), IMHO the likely() here doesn't add anything and could be removed? > return false; > > - resource = kunit_find_named_resource(current->kunit_test, "slab_errors"); > + resource = kunit_find_named_resource(kunit_get_current_test(), "slab_errors"); We just passed kunit_get_current_test() above so maybe we could just keep using current->kunit_test here? Seems unnecessary adding another jump label. > if (!resource) > return false; >