Message ID | 20230921014008.3887257-2-ruanjinjie@huawei.com (mailing list archive) |
---|---|
State | Accepted |
Commit | a6074cf0126b0bee51ab77a15930dc24a4d5db90 |
Delegated to: | Brendan Higgins |
Headers | show |
Series | kunit: Fix some bugs in kunit | expand |
On Thu, 21 Sept 2023 at 09:41, 'Jinjie Ruan' via KUnit Development <kunit-dev@googlegroups.com> wrote: > > modprobe cpumask_kunit and rmmod cpumask_kunit, kmemleak detect > a suspected memory leak as below. > > If kunit_filter_suites() in kunit_module_init() succeeds, the > suite_set.start will not be NULL and the kunit_free_suite_set() in > kunit_module_exit() should free all the memory which has not > been freed. However the test_cases in suites is left out. > > unreferenced object 0xffff54ac47e83200 (size 512): > comm "modprobe", pid 592, jiffies 4294913238 (age 1367.612s) > hex dump (first 32 bytes): > 84 13 1a f0 d3 b6 ff ff 30 68 1a f0 d3 b6 ff ff ........0h...... > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ > backtrace: > [<000000008dec63a2>] slab_post_alloc_hook+0xb8/0x368 > [<00000000ec280d8e>] __kmem_cache_alloc_node+0x174/0x290 > [<00000000896c7740>] __kmalloc+0x60/0x2c0 > [<000000007a50fa06>] kunit_filter_suites+0x254/0x5b8 > [<0000000078cc98e2>] kunit_module_notify+0xf4/0x240 > [<0000000033cea952>] notifier_call_chain+0x98/0x17c > [<00000000973d05cc>] notifier_call_chain_robust+0x4c/0xa4 > [<000000005f95895f>] blocking_notifier_call_chain_robust+0x4c/0x74 > [<0000000048e36fa7>] load_module+0x1a2c/0x1c40 > [<0000000004eb8a91>] init_module_from_file+0x94/0xcc > [<0000000037dbba28>] idempotent_init_module+0x184/0x278 > [<00000000161b75cb>] __arm64_sys_finit_module+0x68/0xa8 > [<000000006dc1669b>] invoke_syscall+0x44/0x100 > [<00000000fa87e304>] el0_svc_common.constprop.1+0x68/0xe0 > [<000000009d8ad866>] do_el0_svc+0x1c/0x28 > [<000000005b83c607>] el0_svc+0x3c/0xc4 > > Fixes: e5857d396f35 ("kunit: flatten kunit_suite*** to kunit_suite** in .kunit_test_suites") > Fixes: b67abaad4d25 ("kunit: Allow kunit test modules to use test filtering") > Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com> > Reviewed-by: Rae Moar <rmoar@google.com> > --- > v2: > - Add Reviewed-by. > --- Looks good to me. Reviewed-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 a6348489d45f..a037a46fae5e 100644 > --- a/lib/kunit/executor.c > +++ b/lib/kunit/executor.c > @@ -137,8 +137,10 @@ void kunit_free_suite_set(struct kunit_suite_set suite_set) > { > struct kunit_suite * const *suites; > > - for (suites = suite_set.start; suites < suite_set.end; suites++) > + for (suites = suite_set.start; suites < suite_set.end; suites++) { > + kfree((*suites)->test_cases); > kfree(*suites); > + } > kfree(suite_set.start); > } > > -- > 2.34.1 > > -- > You received this message because you are subscribed to the Google Groups "KUnit Development" group. > To unsubscribe from this group and stop receiving emails from it, send an email to kunit-dev+unsubscribe@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/msgid/kunit-dev/20230921014008.3887257-2-ruanjinjie%40huawei.com.
diff --git a/lib/kunit/executor.c b/lib/kunit/executor.c index a6348489d45f..a037a46fae5e 100644 --- a/lib/kunit/executor.c +++ b/lib/kunit/executor.c @@ -137,8 +137,10 @@ void kunit_free_suite_set(struct kunit_suite_set suite_set) { struct kunit_suite * const *suites; - for (suites = suite_set.start; suites < suite_set.end; suites++) + for (suites = suite_set.start; suites < suite_set.end; suites++) { + kfree((*suites)->test_cases); kfree(*suites); + } kfree(suite_set.start); }