diff mbox series

kunit: bail out early in __kunit_test_suites_init() if there are no suites to test

Message ID 20240321143200.1854489-1-smayhew@redhat.com (mailing list archive)
State New
Headers show
Series kunit: bail out early in __kunit_test_suites_init() if there are no suites to test | expand

Commit Message

Scott Mayhew March 21, 2024, 2:32 p.m. UTC
Commit c72a870926c2 added a mutex to prevent kunit tests from running
concurrently.  Unfortunately that mutex gets locked during module load
regardless of whether the module actually has any kunit tests.  This
causes a problem for kunit tests that might need to load other kernel
modules (e.g. gss_krb5_test loading the camellia module).

So check to see if there are actually any tests to run before locking
the kunit_run_lock mutex.

Fixes: c72a870926c2 ("kunit: add ability to run tests after boot using debugfs")
Reported-by: Nico Pache <npache@redhat.com>
Signed-off-by: Scott Mayhew <smayhew@redhat.com>
---
 lib/kunit/test.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Rae Moar March 21, 2024, 11:22 p.m. UTC | #1
On Thu, Mar 21, 2024 at 10:32 AM Scott Mayhew <smayhew@redhat.com> wrote:
>
> Commit c72a870926c2 added a mutex to prevent kunit tests from running
> concurrently.  Unfortunately that mutex gets locked during module load
> regardless of whether the module actually has any kunit tests.  This
> causes a problem for kunit tests that might need to load other kernel
> modules (e.g. gss_krb5_test loading the camellia module).
>
> So check to see if there are actually any tests to run before locking
> the kunit_run_lock mutex.
>
> Fixes: c72a870926c2 ("kunit: add ability to run tests after boot using debugfs")
> Reported-by: Nico Pache <npache@redhat.com>
> Signed-off-by: Scott Mayhew <smayhew@redhat.com>

Hi!

Sorry about this bug. Thanks for the patch! We should definitely add this check.

Reviewed-by: Rae Moar <rmoar@google.com>

Thanks!

-Rae

> ---
>  lib/kunit/test.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/lib/kunit/test.c b/lib/kunit/test.c
> index 1d1475578515..b8514dbb337c 100644
> --- a/lib/kunit/test.c
> +++ b/lib/kunit/test.c
> @@ -712,6 +712,9 @@ int __kunit_test_suites_init(struct kunit_suite * const * const suites, int num_
>  {
>         unsigned int i;
>
> +       if (num_suites == 0)
> +               return 0;
> +
>         if (!kunit_enabled() && num_suites > 0) {
>                 pr_info("kunit: disabled\n");
>                 return 0;
> --
> 2.43.0
>
David Gow March 23, 2024, 5:24 a.m. UTC | #2
On Thu, 21 Mar 2024 at 22:32, Scott Mayhew <smayhew@redhat.com> wrote:
>
> Commit c72a870926c2 added a mutex to prevent kunit tests from running
> concurrently.  Unfortunately that mutex gets locked during module load
> regardless of whether the module actually has any kunit tests.  This
> causes a problem for kunit tests that might need to load other kernel
> modules (e.g. gss_krb5_test loading the camellia module).
>
> So check to see if there are actually any tests to run before locking
> the kunit_run_lock mutex.
>
> Fixes: c72a870926c2 ("kunit: add ability to run tests after boot using debugfs")
> Reported-by: Nico Pache <npache@redhat.com>
> Signed-off-by: Scott Mayhew <smayhew@redhat.com>
> ---

Thanks, this works well here, and is a good idea anyway.

Reviewed-by: David Gow <davidgow@google.com>

Cheers,
-- David

>  lib/kunit/test.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/lib/kunit/test.c b/lib/kunit/test.c
> index 1d1475578515..b8514dbb337c 100644
> --- a/lib/kunit/test.c
> +++ b/lib/kunit/test.c
> @@ -712,6 +712,9 @@ int __kunit_test_suites_init(struct kunit_suite * const * const suites, int num_
>  {
>         unsigned int i;
>
> +       if (num_suites == 0)
> +               return 0;
> +
>         if (!kunit_enabled() && num_suites > 0) {
>                 pr_info("kunit: disabled\n");
>                 return 0;
> --
> 2.43.0
>
Scott Mayhew April 30, 2024, 1:58 p.m. UTC | #3
On Sat, 23 Mar 2024, David Gow wrote:

> On Thu, 21 Mar 2024 at 22:32, Scott Mayhew <smayhew@redhat.com> wrote:
> >
> > Commit c72a870926c2 added a mutex to prevent kunit tests from running
> > concurrently.  Unfortunately that mutex gets locked during module load
> > regardless of whether the module actually has any kunit tests.  This
> > causes a problem for kunit tests that might need to load other kernel
> > modules (e.g. gss_krb5_test loading the camellia module).
> >
> > So check to see if there are actually any tests to run before locking
> > the kunit_run_lock mutex.
> >
> > Fixes: c72a870926c2 ("kunit: add ability to run tests after boot using debugfs")
> > Reported-by: Nico Pache <npache@redhat.com>
> > Signed-off-by: Scott Mayhew <smayhew@redhat.com>
> > ---
> 
> Thanks, this works well here, and is a good idea anyway.
> 
> Reviewed-by: David Gow <davidgow@google.com>
> 

Brendan, David,

Is there a reason this patch hasn't been merged?

-Scott

> Cheers,
> -- David
> 
> >  lib/kunit/test.c | 3 +++
> >  1 file changed, 3 insertions(+)
> >
> > diff --git a/lib/kunit/test.c b/lib/kunit/test.c
> > index 1d1475578515..b8514dbb337c 100644
> > --- a/lib/kunit/test.c
> > +++ b/lib/kunit/test.c
> > @@ -712,6 +712,9 @@ int __kunit_test_suites_init(struct kunit_suite * const * const suites, int num_
> >  {
> >         unsigned int i;
> >
> > +       if (num_suites == 0)
> > +               return 0;
> > +
> >         if (!kunit_enabled() && num_suites > 0) {
> >                 pr_info("kunit: disabled\n");
> >                 return 0;
> > --
> > 2.43.0
> >
David Gow May 2, 2024, 12:01 a.m. UTC | #4
On Tue, 30 Apr 2024 at 21:58, Scott Mayhew <smayhew@redhat.com> wrote:
>
> On Sat, 23 Mar 2024, David Gow wrote:
>
> > On Thu, 21 Mar 2024 at 22:32, Scott Mayhew <smayhew@redhat.com> wrote:
> > >
> > > Commit c72a870926c2 added a mutex to prevent kunit tests from running
> > > concurrently.  Unfortunately that mutex gets locked during module load
> > > regardless of whether the module actually has any kunit tests.  This
> > > causes a problem for kunit tests that might need to load other kernel
> > > modules (e.g. gss_krb5_test loading the camellia module).
> > >
> > > So check to see if there are actually any tests to run before locking
> > > the kunit_run_lock mutex.
> > >
> > > Fixes: c72a870926c2 ("kunit: add ability to run tests after boot using debugfs")
> > > Reported-by: Nico Pache <npache@redhat.com>
> > > Signed-off-by: Scott Mayhew <smayhew@redhat.com>
> > > ---
> >
> > Thanks, this works well here, and is a good idea anyway.
> >
> > Reviewed-by: David Gow <davidgow@google.com>
> >
>
> Brendan, David,
>
> Is there a reason this patch hasn't been merged?
>
> -Scott
>

Sorry: it totally slipped through the net. Thanks for the reminder,
it's merged now:
https://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git/commit/?h=kunit&id=2168e528f8679881df7487309f3444a121b2b544

Cheers,
-- David
diff mbox series

Patch

diff --git a/lib/kunit/test.c b/lib/kunit/test.c
index 1d1475578515..b8514dbb337c 100644
--- a/lib/kunit/test.c
+++ b/lib/kunit/test.c
@@ -712,6 +712,9 @@  int __kunit_test_suites_init(struct kunit_suite * const * const suites, int num_
 {
 	unsigned int i;
 
+	if (num_suites == 0)
+		return 0;
+
 	if (!kunit_enabled() && num_suites > 0) {
 		pr_info("kunit: disabled\n");
 		return 0;