Messages in this thread | | | Date | Wed, 13 Jul 2022 01:54:41 +0800 | Subject | Re: [PATCH] kunit: executor: Fix a memory leak on failure in kunit_filter_tests | From | Yujie Liu <> |
| |
Hi David,
On 7/12/2022 17:56, David Gow wrote: > It's possible that memory allocation for the copy will fail, but for the
I think it is "for the _filtered_ will fail". Maybe a typo?
Thanks, Yujie
> copy of the suite to succeed. In this case, the copy could be leaked. > > Properly free 'copy' in the error case for the allocation of 'filtered' > failing. > > Note that there may also have been a similar issue in > kunit_filter_subsuites, before it was removed in "kunit: flatten > kunit_suite*** to kunit_suite** in .kunit_test_suites". > > This was reported by clang-analyzer via the kernel test robot, here: > https://lore.kernel.org/all/c8073b8e-7b9e-0830-4177-87c12f16349c@intel.com/ > > Fixes: a02353f49162 ("kunit: bail out of test filtering logic quicker if OOM") > Reported-by: kernel test robot <yujie.liu@intel.com> > Signed-off-by: David Gow <davidgow@google.com> > --- > lib/kunit/executor.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/lib/kunit/executor.c b/lib/kunit/executor.c > index 6c489d6c5e5d..5e223327196a 100644 > --- a/lib/kunit/executor.c > +++ b/lib/kunit/executor.c > @@ -74,8 +74,10 @@ kunit_filter_tests(const struct kunit_suite *const suite, const char *test_glob) > return ERR_PTR(-ENOMEM); > > filtered = kcalloc(n + 1, sizeof(*filtered), GFP_KERNEL); > - if (!filtered) > + if (!filtered) { > + kfree(copy); > return ERR_PTR(-ENOMEM); > + } > > n = 0; > kunit_suite_for_each_test_case(suite, test_case) {
| |