Unverified Commit 9b0827ba authored by Maxime Ripard's avatar Maxime Ripard
Browse files

drm/tests: modeset: Fix drm_display_mode memory leak



drm_analog_tv_mode() and its variants return a drm_display_mode that
needs to be destroyed later one. The drm_test_pick_cmdline_named() test
never does however, which leads to a memory leak.

Let's make sure it's freed.

Reported-by: default avatarPhilipp Stanner <phasta@mailbox.org>
Closes: https://lore.kernel.org/dri-devel/a7655158a6367ac46194d57f4b7433ef0772a73e.camel@mailbox.org/


Fixes: fedcaf72 ("drm/modes: Properly generate a drm_display_mode from a named mode")
Reviewed-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Link: https://lore.kernel.org/r/20250408-drm-kunit-drm-display-mode-memleak-v1-3-996305a2e75a@kernel.org


Signed-off-by: default avatarMaxime Ripard <mripard@kernel.org>
parent dacafdcc
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -132,7 +132,8 @@ static void drm_test_pick_cmdline_named(struct kunit *test)
	struct drm_device *drm = priv->drm;
	struct drm_connector *connector = &priv->connector;
	struct drm_cmdline_mode *cmdline_mode = &connector->cmdline_mode;
	const struct drm_display_mode *expected_mode, *mode;
	const struct drm_display_mode *mode;
	struct drm_display_mode *expected_mode;
	const char *cmdline = params->cmdline;
	int ret;

@@ -152,6 +153,9 @@ static void drm_test_pick_cmdline_named(struct kunit *test)
	expected_mode = params->func(drm);
	KUNIT_ASSERT_NOT_NULL(test, expected_mode);

	ret = drm_kunit_add_mode_destroy_action(test, expected_mode);
	KUNIT_ASSERT_EQ(test, ret, 0);

	KUNIT_EXPECT_TRUE(test, drm_mode_equal(expected_mode, mode));
}