Re: [PATCH v2 05/13] drm/panic: Pass colors to draw_panic_dispatch()

[email protected]
Newsgroups org.freedesktop.lists.dri-devel,dev.linux.lists.imx,org.freedesktop.lists.intel-gfx,org.freedesktop.lists.intel-xe,org.kernel.vger.linux-hyperv
Message-ID <[email protected]>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Using KUNIT_ASSERT_EQ with unmanaged resources causes kernel memory leaks on test failure.
--

--- Patch [5]: [PATCH v2 05/13] drm/panic: Pass colors to draw_panic_dispatch() ---
commit dfb1a50d1181cba2ccd93fe314ac428958a579a7
Author: Thomas Zimmermann <[email protected]>

drm/panic: Pass colors to draw_panic_dispatch()

This commit sets the panic-screen colors in a central location and passes
them to the individual drawing functions. In the test cases, it hardcodes
these colors to remove test dependencies on the exact config values.

> diff --git a/drivers/gpu/drm/tests/drm_panic_test.c b/drivers/gpu/drm/tests/drm_panic_test.c
> index fdd77b0cc54c9..969a096ec840f 100644
> --- a/drivers/gpu/drm/tests/drm_panic_test.c
> +++ b/drivers/gpu/drm/tests/drm_panic_test.c
[ ... ]
> @@ -48,10 +41,27 @@ struct drm_test_mode {
>  	.width = w, \
>  	.height = h, \
>  	.format = f, \
> -	.draw_screen = draw_panic_screen_##name, \
> +	.draw_screen = draw_panic_screen_ ## name ## _default, \

[Severity: Medium]
When params->draw_screen(sb) fails, does this cause the test to leak fb?

In drm_test_panic_screen_user_map(), the KUNIT_ASSERT_EQ() macro aborts the
test before vfree(fb) can execute:

drivers/gpu/drm/tests/drm_panic_test.c:drm_test_panic_screen_user_map() {
    ...
	fb = vmalloc(fb_size);
    ...
	ret = params->draw_screen(sb);
	KUNIT_ASSERT_EQ(test, ret, 0);
    ...
	vfree(fb);
}

Similarly, does drm_test_panic_screen_user_page() leak the allocated pages
when the test fails? An abort here skips the free_pages cleanup block:

drivers/gpu/drm/tests/drm_panic_test.c:drm_test_panic_screen_user_page() {
    ...
	ret = params->draw_screen(sb);
	KUNIT_ASSERT_EQ(test, ret, 0);
    ...
free_pages:
	for (p = 0; p < npages; p++)
		__free_page(pages[p]);
	kfree(pages);
}

>  	.fname = #name, \
>  	}, \

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=5
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.