kunit: fix reference count leak in kfree_at_end
authorXiyu Yang <xiyuyang19@fudan.edu.cn>
Thu, 9 Sep 2021 07:24:36 +0000 (15:24 +0800)
committerShuah Khan <skhan@linuxfoundation.org>
Fri, 1 Oct 2021 19:49:38 +0000 (13:49 -0600)
commitf62314b1ced25c58b86e044fc951cd6a1ea234cf
tree92ecb8b41e5469aff03dc367e7501d2c7f3b9f9e
parentd8c23ead708b40a16413163f5f93e07fbd4f077d
kunit: fix reference count leak in kfree_at_end

The reference counting issue happens in the normal path of
kfree_at_end(). When kunit_alloc_and_get_resource() is invoked, the
function forgets to handle the returned resource object, whose refcount
increased inside, causing a refcount leak.

Fix this issue by calling kunit_alloc_resource() instead of
kunit_alloc_and_get_resource().

Fixed the following when applying:
Shuah Khan <skhan@linuxfoundation.org>

CHECK: Alignment should match open parenthesis
+ kunit_alloc_resource(test, NULL, kfree_res_free, GFP_KERNEL,
       (void *)to_free);

Signed-off-by: Xiyu Yang <xiyuyang19@fudan.edu.cn>
Signed-off-by: Xin Tan <tanxin.ctf@gmail.com>
Reviewed-by: Daniel Latypov <dlatypov@google.com>
Reviewed-by: Brendan Higgins <brendanhiggins@google.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
lib/kunit/executor_test.c