drm/tests: helpers: Create kunit helper to destroy a drm_display_mode
[ Upstream commit 13c1d5f3a7fa7b55a26e73bb9e95342374a489b2 ] A number of test suites call functions that expect the returned drm_display_mode to be destroyed eventually. However, none of the tests called drm_mode_destroy, which results in a memory leak. Since drm_mode_destroy takes two pointers as argument, we can't use a kunit wrapper. Let's just create a helper every test suite can use. Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://lore.kernel.org/r/20250408-drm-kunit-drm-display-mode-memleak-v1-1-996305a2e75a@kernel.org Signed-off-by: Maxime Ripard <mripard@kernel.org> Stable-dep-of: 70f29ca3117a ("drm/tests: cmdline: Fix drm_display_mode memory leak") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
71dd750a08
commit
f951d643bc
@@ -319,6 +319,28 @@ static void kunit_action_drm_mode_destroy(void *ptr)
|
|||||||
drm_mode_destroy(NULL, mode);
|
drm_mode_destroy(NULL, mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* drm_kunit_add_mode_destroy_action() - Add a drm_destroy_mode kunit action
|
||||||
|
* @test: The test context object
|
||||||
|
* @mode: The drm_display_mode to destroy eventually
|
||||||
|
*
|
||||||
|
* Registers a kunit action that will destroy the drm_display_mode at
|
||||||
|
* the end of the test.
|
||||||
|
*
|
||||||
|
* If an error occurs, the drm_display_mode will be destroyed.
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* 0 on success, an error code otherwise.
|
||||||
|
*/
|
||||||
|
int drm_kunit_add_mode_destroy_action(struct kunit *test,
|
||||||
|
struct drm_display_mode *mode)
|
||||||
|
{
|
||||||
|
return kunit_add_action_or_reset(test,
|
||||||
|
kunit_action_drm_mode_destroy,
|
||||||
|
mode);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(drm_kunit_add_mode_destroy_action);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* drm_kunit_display_mode_from_cea_vic() - return a mode for CEA VIC for a KUnit test
|
* drm_kunit_display_mode_from_cea_vic() - return a mode for CEA VIC for a KUnit test
|
||||||
* @test: The test context object
|
* @test: The test context object
|
||||||
|
|||||||
@@ -120,6 +120,9 @@ drm_kunit_helper_create_crtc(struct kunit *test,
|
|||||||
const struct drm_crtc_funcs *funcs,
|
const struct drm_crtc_funcs *funcs,
|
||||||
const struct drm_crtc_helper_funcs *helper_funcs);
|
const struct drm_crtc_helper_funcs *helper_funcs);
|
||||||
|
|
||||||
|
int drm_kunit_add_mode_destroy_action(struct kunit *test,
|
||||||
|
struct drm_display_mode *mode);
|
||||||
|
|
||||||
struct drm_display_mode *
|
struct drm_display_mode *
|
||||||
drm_kunit_display_mode_from_cea_vic(struct kunit *test, struct drm_device *dev,
|
drm_kunit_display_mode_from_cea_vic(struct kunit *test, struct drm_device *dev,
|
||||||
u8 video_code);
|
u8 video_code);
|
||||||
|
|||||||
Reference in New Issue
Block a user