Skip to content

Commit 70f29ca

Browse files
committed
drm/tests: cmdline: 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_cmdline_tv_options() test never does however, which leads to a memory leak. Let's make sure it's freed. Reported-by: Philipp Stanner <phasta@mailbox.org> Closes: https://lore.kernel.org/dri-devel/a7655158a6367ac46194d57f4b7433ef0772a73e.camel@mailbox.org/ Fixes: e691c99 ("drm/modes: Introduce the tv_mode property as a command-line option") Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://lore.kernel.org/r/20250408-drm-kunit-drm-display-mode-memleak-v1-4-996305a2e75a@kernel.org Signed-off-by: Maxime Ripard <mripard@kernel.org>
1 parent 9b0827b commit 70f29ca

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

drivers/gpu/drm/tests/drm_cmdline_parser_test.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include <kunit/test.h>
88

99
#include <drm/drm_connector.h>
10+
#include <drm/drm_kunit_helpers.h>
1011
#include <drm/drm_modes.h>
1112

1213
static const struct drm_connector no_connector = {};
@@ -955,8 +956,15 @@ struct drm_cmdline_tv_option_test {
955956
static void drm_test_cmdline_tv_options(struct kunit *test)
956957
{
957958
const struct drm_cmdline_tv_option_test *params = test->param_value;
958-
const struct drm_display_mode *expected_mode = params->mode_fn(NULL);
959+
struct drm_display_mode *expected_mode;
959960
struct drm_cmdline_mode mode = { };
961+
int ret;
962+
963+
expected_mode = params->mode_fn(NULL);
964+
KUNIT_ASSERT_NOT_NULL(test, expected_mode);
965+
966+
ret = drm_kunit_add_mode_destroy_action(test, expected_mode);
967+
KUNIT_ASSERT_EQ(test, ret, 0);
960968

961969
KUNIT_EXPECT_TRUE(test, drm_mode_parse_command_line_for_connector(params->cmdline,
962970
&no_connector, &mode));

0 commit comments

Comments
 (0)