]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
kunit: fix executor OOM error handling logic on non-UML
authorDaniel Latypov <dlatypov@google.com>
Fri, 13 May 2022 18:37:07 +0000 (11:37 -0700)
committerShuah Khan <skhan@linuxfoundation.org>
Tue, 17 May 2022 16:01:40 +0000 (10:01 -0600)
The existing logic happens to work fine on UML, but is not correct when
running on other arches.

1. We didn't initialize `int err`, and kunit_filter_suites() doesn't
   explicitly set it to 0 on success. So we had false "failures".
   Note: it doesn't happen on UML, causing this to get overlooked.
2. If we error out, we do not call kunit_handle_shutdown().
   This makes kunit.py timeout when using a non-UML arch, since the QEMU
   process doesn't ever exit.

Fixes: a02353f49162 ("kunit: bail out of test filtering logic quicker if OOM")
Signed-off-by: Daniel Latypov <dlatypov@google.com>
Reviewed-by: Brendan Higgins <brendanhiggins@google.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
lib/kunit/executor.c

index 2f73a6a35a7e95e781b2c69fb4bf5f4e286ef4d9..96f96e42ce062274f461a5cd9efa11265faebe11 100644 (file)
@@ -247,13 +247,13 @@ int kunit_run_all_tests(void)
                .start = __kunit_suites_start,
                .end = __kunit_suites_end,
        };
-       int err;
+       int err = 0;
 
        if (filter_glob_param) {
                suite_set = kunit_filter_suites(&suite_set, filter_glob_param, &err);
                if (err) {
                        pr_err("kunit executor: error filtering suites: %d\n", err);
-                       return err;
+                       goto out;
                }
        }
 
@@ -268,9 +268,10 @@ int kunit_run_all_tests(void)
                kunit_free_suite_set(suite_set);
        }
 
-       kunit_handle_shutdown();
 
-       return 0;
+out:
+       kunit_handle_shutdown();
+       return err;
 }
 
 #if IS_BUILTIN(CONFIG_KUNIT_TEST)