Sasha Levin
unread,Oct 20, 2021, 8:20:27 PM10/20/21Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Sign in to report message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to linux-...@vger.kernel.org, sta...@vger.kernel.org, Xiyu Yang, Xin Tan, Daniel Latypov, Brendan Higgins, Shuah Khan, Sasha Levin, linux-k...@vger.kernel.org, kuni...@googlegroups.com
From: Xiyu Yang <
xiyuy...@fudan.edu.cn>
[ Upstream commit f62314b1ced25c58b86e044fc951cd6a1ea234cf ]
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 <
sk...@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 <
xiyuy...@fudan.edu.cn>
Signed-off-by: Xin Tan <
tanxi...@gmail.com>
Reviewed-by: Daniel Latypov <
dlat...@google.com>
Reviewed-by: Brendan Higgins <
brendan...@google.com>
Signed-off-by: Shuah Khan <
sk...@linuxfoundation.org>
Signed-off-by: Sasha Levin <
sas...@kernel.org>
---
lib/kunit/executor_test.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/kunit/executor_test.c b/lib/kunit/executor_test.c
index cdbe54b16501..e14a18af573d 100644
--- a/lib/kunit/executor_test.c
+++ b/lib/kunit/executor_test.c
@@ -116,8 +116,8 @@ static void kfree_at_end(struct kunit *test, const void *to_free)
/* kfree() handles NULL already, but avoid allocating a no-op cleanup. */
if (IS_ERR_OR_NULL(to_free))
return;
- kunit_alloc_and_get_resource(test, NULL, kfree_res_free, GFP_KERNEL,
- (void *)to_free);
+ kunit_alloc_resource(test, NULL, kfree_res_free, GFP_KERNEL,
+ (void *)to_free);
}
static struct kunit_suite *alloc_fake_suite(struct kunit *test,
--
2.33.0