kunit: bail out of test filtering logic quicker if OOM
authorDaniel Latypov <dlatypov@google.com>
Wed, 11 May 2022 21:16:26 +0000 (14:16 -0700)
committerShuah Khan <skhan@linuxfoundation.org>
Thu, 12 May 2022 17:15:08 +0000 (11:15 -0600)
commita02353f491622e49c7ddedc6a6dc4f1d6ed2150a
tree0ae4a8dba612237ad7fd5145c896114ccc766a8a
parentdcbb2ee24601fabbb547fb0c747ca98b876fe5df
kunit: bail out of test filtering logic quicker if OOM

When filtering what tests to run (suites and/or cases) via
kunit.filter_glob (e.g. kunit.py run <glob>), we allocate copies of
suites.

These allocations can fail, and we largely don't handle that.
Note: realistically, this probably doesn't matter much.
We're not allocating much memory and this happens early in boot, so if
we can't do that, then there's likely far bigger problems.

This patch makes us immediately bail out from the top-level function
(kunit_filter_suites) with -ENOMEM if any of the underlying kmalloc()
calls return NULL.

Implementation note: we used to return NULL pointers from some functions
to indicate either that all suites/tests were filtered out or there was
an error allocating the new array.

We'll log a short error in this case and not run any tests or print a
TAP header. From a kunit.py user's perspective, they'll get a message
about missing/invalid TAP output and have to dig into the test.log to
see it. Since hitting this error seems so unlikely, it's probably fine
to not invent a way to plumb this error message more visibly.

See also: https://lore.kernel.org/linux-kselftest/20220329103919.2376818-1-lv.ruyi@zte.com.cn/

Signed-off-by: Daniel Latypov <dlatypov@google.com>
Reported-by: Zeal Robot <zealci@zte.com.cn>
Reported-by: Lv Ruyi <lv.ruyi@zte.com.cn>
Reviewed-by: Brendan Higgins <brendanhiggins@google.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
lib/kunit/executor.c
lib/kunit/executor_test.c