From patchwork Tue Apr 8 07:34:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14042322 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id BA0D5C369A1 for ; Tue, 8 Apr 2025 07:34:30 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3352C10E5EE; Tue, 8 Apr 2025 07:34:30 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.b="uqzQPCux"; dkim-atps=neutral Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by gabe.freedesktop.org (Postfix) with ESMTPS id E9F0A10E5EF for ; Tue, 8 Apr 2025 07:34:28 +0000 (UTC) Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id F37D2A48EBC; Tue, 8 Apr 2025 07:28:55 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 07653C4CEEA; Tue, 8 Apr 2025 07:34:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744097664; bh=T2L/jwqbXEm6QSAc1uHVXlkQ9aAbFLh15AGe7Va8SrU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=uqzQPCuxq31Yt1QiPsUo+LApWRsH9N/OiAYMjWyBAKzl2luEjZe+FiIaU5B85Q6V2 2NBBHwtofgdQFsbISAEHX1+77SGVNAjcz59EaOP5jkTDO3dlYfKdjw8fievtV/wHY7 lmJIzq7VpeL/TNycn7MOt0A+mkN1YAwHGTU9FChxFpxDBgiJxkDyr2x2RF5G/wAwGI m50pCValPKfftHTdWSkJxrUdXk1IFIpiqJCPyA16Jjq4/lCMzfhggzmYugYtw+Xpa+ vn4sZh3xVhQdwGMhun7PpF2HiMM2LEw4f/a9prpQ0lt4C4oQe2NB3EuPfJBcz8eIEo l+UXQVHgDgCSA== From: Maxime Ripard Date: Tue, 08 Apr 2025 09:34:07 +0200 Subject: [PATCH 1/7] drm/tests: helpers: Create kunit helper to destroy a drm_display_mode MIME-Version: 1.0 Message-Id: <20250408-drm-kunit-drm-display-mode-memleak-v1-1-996305a2e75a@kernel.org> References: <20250408-drm-kunit-drm-display-mode-memleak-v1-0-996305a2e75a@kernel.org> In-Reply-To: <20250408-drm-kunit-drm-display-mode-memleak-v1-0-996305a2e75a@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter Cc: Philipp Stanner , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2698; i=mripard@kernel.org; h=from:subject:message-id; bh=T2L/jwqbXEm6QSAc1uHVXlkQ9aAbFLh15AGe7Va8SrU=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOlfLpapHjI9eae2yneqavzNE3xrjHcdnnj47PEjanOXm kxV9Tlv2VHKwiDGxSArpsgSI2y+JO7UrNedbHzzYOawMoEMYeDiFICJKDAx/HfRC8riOXvwdmnb FC2Zq8/XxV95kpCXsPHGxQ07Yg56bnVjZJje9cujadbukFtNzK3H+73CZ663y+J2KkrwWfqoW+5 lNicA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" 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. Signed-off-by: Maxime Ripard --- drivers/gpu/drm/tests/drm_kunit_helpers.c | 23 +++++++++++++++++++++++ include/drm/drm_kunit_helpers.h | 3 +++ 2 files changed, 26 insertions(+) diff --git a/drivers/gpu/drm/tests/drm_kunit_helpers.c b/drivers/gpu/drm/tests/drm_kunit_helpers.c index a4eb68f0decca15988105b9d58266e3871934a8b..7f540f9e4d98cc507e51b486edb99177a23011d1 100644 --- a/drivers/gpu/drm/tests/drm_kunit_helpers.c +++ b/drivers/gpu/drm/tests/drm_kunit_helpers.c @@ -276,10 +276,33 @@ static void kunit_action_drm_mode_destroy(void *ptr) struct drm_display_mode *mode = ptr; 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 * @test: The test context object * @dev: DRM device * @video_code: CEA VIC of the mode diff --git a/include/drm/drm_kunit_helpers.h b/include/drm/drm_kunit_helpers.h index 11d59ce0bac0bbec07ae5f07ed9710cf01d73f09..1c62d1d4458cae3a6883a0daaf42b8431c4a213a 100644 --- a/include/drm/drm_kunit_helpers.h +++ b/include/drm/drm_kunit_helpers.h @@ -116,10 +116,13 @@ drm_kunit_helper_create_crtc(struct kunit *test, struct drm_plane *primary, struct drm_plane *cursor, const struct drm_crtc_funcs *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 * drm_kunit_display_mode_from_cea_vic(struct kunit *test, struct drm_device *dev, u8 video_code); #endif // DRM_KUNIT_HELPERS_H_ From patchwork Tue Apr 8 07:34:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14042323 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 077E4C369A4 for ; Tue, 8 Apr 2025 07:34:32 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 6445210E5EF; Tue, 8 Apr 2025 07:34:30 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.b="UoOAfjsd"; dkim-atps=neutral Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by gabe.freedesktop.org (Postfix) with ESMTPS id E654210E5EE for ; Tue, 8 Apr 2025 07:34:28 +0000 (UTC) Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id B662EA48ECD; Tue, 8 Apr 2025 07:28:58 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BE3D4C4CEEA; Tue, 8 Apr 2025 07:34:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744097667; bh=dWe7Fz+nhJsB3QR1kEnLv2yiss8BTbIes6Bs4jDjbNI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=UoOAfjsdM2w0CH240aPIYDb3rS5O76eBW44xynngk7QUfgt4oRHDbGiCO3P9Homru cRV/6z7Nd8oMBgAZ6/7baE6cRCVzbY3OBj5tk2yZXWvFZourDIbQfG1n0d8RC9+1Lk /TaFNSaT78zp6oB/5SYG2nvF/S0sMP7ZakviAhRwCKfdK72qua2OSC/6ni88LUaUKp iF47AQV1LecNHc9TfWsrYnhpn107F7WAjGMNl8L17QjF/ek5QHYgOMz5GuZjBqXc4k VfAf08HrHC+6EDQ7VTlsKnEPoBEYnue40t+p8RmP9ZtfnTKFv+PGY4oqAAXxW+C1Fz S0+g+sU8jwsXA== From: Maxime Ripard Date: Tue, 08 Apr 2025 09:34:08 +0200 Subject: [PATCH 2/7] drm/tests: modeset: Fix drm_display_mode memory leak MIME-Version: 1.0 Message-Id: <20250408-drm-kunit-drm-display-mode-memleak-v1-2-996305a2e75a@kernel.org> References: <20250408-drm-kunit-drm-display-mode-memleak-v1-0-996305a2e75a@kernel.org> In-Reply-To: <20250408-drm-kunit-drm-display-mode-memleak-v1-0-996305a2e75a@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter Cc: Philipp Stanner , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1372; i=mripard@kernel.org; h=from:subject:message-id; bh=dWe7Fz+nhJsB3QR1kEnLv2yiss8BTbIes6Bs4jDjbNI=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOlfLpZfe8822fVS1VGWR4x5pg73OHoT1N+fM5teq3A+/ ubsznleHaUsDGJcDLJiiiwxwuZL4k7Net3JxjcPZg4rE8gQBi5OAZhI1TuGf9qh/94UTIxT3VTt 7viVZ31MZEHu9dmrPPtSv5TvS+GcLsrIcNuPnWVZwNr4BoFDR78mzWXO/bC33N131pmC/TNcZmj s4QIA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" drm_mode_find_dmt() returns a drm_display_mode that needs to be destroyed later one. The drm_test_pick_cmdline_res_1920_1080_60() test never does however, which leads to a memory leak. Let's make sure it's freed. Closes: https://lore.kernel.org/dri-devel/a7655158a6367ac46194d57f4b7433ef0772a73e.camel@mailbox.org/ Fixes: 8fc0380f6ba7 ("drm/client: Add some tests for drm_connector_pick_cmdline_mode()") Signed-off-by: Maxime Ripard --- drivers/gpu/drm/tests/drm_client_modeset_test.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/tests/drm_client_modeset_test.c b/drivers/gpu/drm/tests/drm_client_modeset_test.c index 7516f6cb36e4e3a1ed3a655de6f6a4479a0efade..3e9518d7b8b7eb92f1be3ce376d850cbab638d10 100644 --- a/drivers/gpu/drm/tests/drm_client_modeset_test.c +++ b/drivers/gpu/drm/tests/drm_client_modeset_test.c @@ -93,10 +93,13 @@ static void drm_test_pick_cmdline_res_1920_1080_60(struct kunit *test) int ret; expected_mode = drm_mode_find_dmt(priv->drm, 1920, 1080, 60, false); KUNIT_ASSERT_NOT_NULL(test, expected_mode); + ret = drm_kunit_add_mode_destroy_action(test, expected_mode); + KUNIT_ASSERT_EQ(test, ret, 0); + KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, connector, cmdline_mode)); From patchwork Tue Apr 8 07:34:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14042325 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E8569C3600C for ; Tue, 8 Apr 2025 07:34:35 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 39F9910E5F1; Tue, 8 Apr 2025 07:34:35 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.b="Mhh/mKKV"; dkim-atps=neutral Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id C2C4610E5F0 for ; Tue, 8 Apr 2025 07:34:33 +0000 (UTC) Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 4BA184A0C1; Tue, 8 Apr 2025 07:34:29 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 86341C4CEE5; Tue, 8 Apr 2025 07:34:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744097669; bh=RnnIZ34b3oTsJIkOQPflExxRv0VozyVKDB6J0hBGD/E=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Mhh/mKKVp0dArmRRWV3G8QETtoGLkQ6q/uxYGj27hdnWhLchZmWJFQwGdJA5F8I/U yktWCg25dTx6xO13xCVuvgs+2NvlpO5M82RofsA6O9uifM1IV9hqplHkhm15qR1FCT dz9KZCBm7J5jwQHf7OLIAwZCAVgAOz3QgcwVBYXUsX3LX8W3Dr6hueXf1SjfDOMDON Baf15i6xnx4kmYpZL+pjvNzS8pR9jarNwNVl3FRPwOLzkczau+pQyQPFLXDC33Ue2P qUXSWNXyM3ElQmU7qrD5wCOO5l3j+aP0htsmp8hiLWeQSpg7GFtm2iREWOpTsm+l4r fTEKZt2i+gXLA== From: Maxime Ripard Date: Tue, 08 Apr 2025 09:34:09 +0200 Subject: [PATCH 3/7] drm/tests: modeset: Fix drm_display_mode memory leak MIME-Version: 1.0 Message-Id: <20250408-drm-kunit-drm-display-mode-memleak-v1-3-996305a2e75a@kernel.org> References: <20250408-drm-kunit-drm-display-mode-memleak-v1-0-996305a2e75a@kernel.org> In-Reply-To: <20250408-drm-kunit-drm-display-mode-memleak-v1-0-996305a2e75a@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter Cc: Philipp Stanner , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2082; i=mripard@kernel.org; h=from:subject:message-id; bh=RnnIZ34b3oTsJIkOQPflExxRv0VozyVKDB6J0hBGD/E=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOlfLpa3itVESvOsmrP0+TvuL15qZ2aenKzVuo1ZLr49+ vpTu5VWHaUsDGJcDLJiiiwxwuZL4k7Net3JxjcPZg4rE8gQBi5OAZhItBDDP/vl52IFt/5K1ZSu U9/5w+Oe+pGcd7k2bl+y7c+HZUUIujEy/Hj8Tuv4nx0z34jzyM696Xj3spLxR4PLy+bXZ/35lbz gMBcA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" 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. Closes: https://lore.kernel.org/dri-devel/a7655158a6367ac46194d57f4b7433ef0772a73e.camel@mailbox.org/ Fixes: fedcaf726f54 ("drm/modes: Properly generate a drm_display_mode from a named mode") Signed-off-by: Maxime Ripard --- drivers/gpu/drm/tests/drm_client_modeset_test.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/tests/drm_client_modeset_test.c b/drivers/gpu/drm/tests/drm_client_modeset_test.c index 3e9518d7b8b7eb92f1be3ce376d850cbab638d10..b2fdb1a774fe69c4e14b718324d7380f900bd548 100644 --- a/drivers/gpu/drm/tests/drm_client_modeset_test.c +++ b/drivers/gpu/drm/tests/drm_client_modeset_test.c @@ -130,11 +130,12 @@ static void drm_test_pick_cmdline_named(struct kunit *test) const struct drm_connector_pick_cmdline_mode_test *params = test->param_value; struct drm_client_modeset_test_priv *priv = test->priv; 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; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, @@ -150,10 +151,13 @@ static void drm_test_pick_cmdline_named(struct kunit *test) KUNIT_ASSERT_NOT_NULL(test, mode); 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)); } static const struct drm_connector_pick_cmdline_mode_test drm_connector_pick_cmdline_mode_tests[] = { From patchwork Tue Apr 8 07:34:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14042324 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 98E47C369A1 for ; Tue, 8 Apr 2025 07:34:35 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0218510E5F0; Tue, 8 Apr 2025 07:34:35 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.b="gy0vGJzC"; dkim-atps=neutral Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id C2F2C10E5F1 for ; Tue, 8 Apr 2025 07:34:33 +0000 (UTC) Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 431E543D15; Tue, 8 Apr 2025 07:34:32 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 58274C4CEEA; Tue, 8 Apr 2025 07:34:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744097672; bh=F3ezxU5SGoiD8ddVs6HKsPqrpZe4wJCeXDRAqLCrgfE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=gy0vGJzC/pEAbHi72fmc/r6c6bIAohnAiPm+1QhM8tia49diFhfTHdkiweferQA99 lPhNmf1xAMHtcoJ+9LZIQot38+uuf9yC89Tv2hbli2PlkEcUoNHTHf55SgxgKVm8Y+ ZHokJjpdeWbwX0KTXvFxRBJ9nt6QP78z0U0Qp3jBVKu/oQISiIoaQekER0BklOeVFO /TZbTNQkAYXMxxNVPISMBP8+utPAZCvqHn8RlE2oTFv2KHw9Oneh+KxEBxAgZU5tQv Tuy/U/bjJyA01AW3EH4a4WsAp1SoK9pMZdA4AsK+16QNFGU0LKAc4AGHVfh1DinN31 7oZhsQtfTIdrw== From: Maxime Ripard Date: Tue, 08 Apr 2025 09:34:10 +0200 Subject: [PATCH 4/7] drm/tests: cmdline: Fix drm_display_mode memory leak MIME-Version: 1.0 Message-Id: <20250408-drm-kunit-drm-display-mode-memleak-v1-4-996305a2e75a@kernel.org> References: <20250408-drm-kunit-drm-display-mode-memleak-v1-0-996305a2e75a@kernel.org> In-Reply-To: <20250408-drm-kunit-drm-display-mode-memleak-v1-0-996305a2e75a@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter Cc: Philipp Stanner , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2008; i=mripard@kernel.org; h=from:subject:message-id; bh=F3ezxU5SGoiD8ddVs6HKsPqrpZe4wJCeXDRAqLCrgfE=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOlfLlaI/Io94ij+L+3p8qlxSfMiVZb8Ocm/8nj9Br6wy TdvMaeGdJSyMIhxMciKKbLECJsviTs163UnG988mDmsTCBDGLg4BWAifhGMDK9THM2LM8+auAq+ qd7altqqzxO084wxT+NL7zkOcr8V9jEy3Eq6eZ+xMc9w/tEbs7MP1HBE7avI+Nd+7HtAyLSdomt TGQE= X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" 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. Closes: https://lore.kernel.org/dri-devel/a7655158a6367ac46194d57f4b7433ef0772a73e.camel@mailbox.org/ Fixes: e691c9992ae1 ("drm/modes: Introduce the tv_mode property as a command-line option") Signed-off-by: Maxime Ripard --- drivers/gpu/drm/tests/drm_cmdline_parser_test.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/tests/drm_cmdline_parser_test.c b/drivers/gpu/drm/tests/drm_cmdline_parser_test.c index 59c8408c453c2ef8f18c7c887b0405418e9e1f99..1cfcb597b088b4d159a5fb10a309338cb73abbe9 100644 --- a/drivers/gpu/drm/tests/drm_cmdline_parser_test.c +++ b/drivers/gpu/drm/tests/drm_cmdline_parser_test.c @@ -5,10 +5,11 @@ */ #include #include +#include #include static const struct drm_connector no_connector = {}; static void drm_test_cmdline_force_e_only(struct kunit *test) @@ -953,12 +954,19 @@ struct drm_cmdline_tv_option_test { }; static void drm_test_cmdline_tv_options(struct kunit *test) { const struct drm_cmdline_tv_option_test *params = test->param_value; - const struct drm_display_mode *expected_mode = params->mode_fn(NULL); + struct drm_display_mode *expected_mode; struct drm_cmdline_mode mode = { }; + int ret; + + expected_mode = params->mode_fn(NULL); + 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_parse_command_line_for_connector(params->cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, expected_mode->hdisplay); From patchwork Tue Apr 8 07:34:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14042326 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 14EBDC3600C for ; Tue, 8 Apr 2025 07:34:39 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 74B9010E5F3; Tue, 8 Apr 2025 07:34:38 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.b="kbCrWC8O"; dkim-atps=neutral Received: from tor.source.kernel.org (tor.source.kernel.org [172.105.4.254]) by gabe.freedesktop.org (Postfix) with ESMTPS id 68FA910E5F2 for ; Tue, 8 Apr 2025 07:34:36 +0000 (UTC) Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 0F9C7614B5; Tue, 8 Apr 2025 07:34:27 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 286A6C4CEEA; Tue, 8 Apr 2025 07:34:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744097675; bh=ghSfrPXI2nSYR1VXeWBWO2imBz8Oggxn/25Nh3fSTVo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=kbCrWC8Owu23aMKrSZAaT70K6soBdil82f2Kxo6ZxkQ/fK/fmBy5jtbJK+PlL88wD OiRVTF2wbM/j35kg3DqQTABxamJjCKIOEC9gt+cuci3/6C2PghOtDZziMkDEfgezVG jPgnLJ4uH/lOET8DVrQWYJfcOOdYF4LNf0uiSSYwAOXQrJZVUZyCLVOL8im4ZOPqOj npCC5W3EnqlyzdlN1cmdlyNtCy2Oz1ZRE0ClIG4Pv8zvIM8AQLlUqXcPHxoh6Wg/pV ffgE3+sw63LQ7GNLp4ZDvJ7JMtMmb0DaAxzYh3R/hfWwoh8ZnR5OJAbYazk7a/X/FR 6vdl9xpvJpw6w== From: Maxime Ripard Date: Tue, 08 Apr 2025 09:34:11 +0200 Subject: [PATCH 5/7] drm/tests: modes: Fix drm_display_mode memory leak MIME-Version: 1.0 Message-Id: <20250408-drm-kunit-drm-display-mode-memleak-v1-5-996305a2e75a@kernel.org> References: <20250408-drm-kunit-drm-display-mode-memleak-v1-0-996305a2e75a@kernel.org> In-Reply-To: <20250408-drm-kunit-drm-display-mode-memleak-v1-0-996305a2e75a@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter Cc: Philipp Stanner , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3907; i=mripard@kernel.org; h=from:subject:message-id; bh=ghSfrPXI2nSYR1VXeWBWO2imBz8Oggxn/25Nh3fSTVo=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOlfLlbavc39oB+hkVtpymzvM3ERwwtJqbD5cr2TJm2T2 nxgft6EjlIWBjEuBlkxRZYYYfMlcadmve5k45sHM4eVCWQIAxenAEykQ4Thn3ZL5JqMHCYjTz+e NYf7buY9WH3dPDtFON7Xdbbkstv54gx/eP+dutTgofEowF5m7sY9+2S2RwmeXRDHpPhhvaVO/xZ PTgA= X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" drm_analog_tv_mode() and its variants return a drm_display_mode that needs to be destroyed later one. The drm_modes_analog_tv tests never do however, which leads to a memory leak. Let's make sure it's freed. Closes: https://lore.kernel.org/dri-devel/a7655158a6367ac46194d57f4b7433ef0772a73e.camel@mailbox.org/ Fixes: 4fcd238560ee ("drm/modes: Add a function to generate analog display modes") Signed-off-by: Maxime Ripard --- drivers/gpu/drm/tests/drm_modes_test.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/gpu/drm/tests/drm_modes_test.c b/drivers/gpu/drm/tests/drm_modes_test.c index 6ed51f99e133c96db7c1deafea9be1c00eebe7a1..7ba646d87856f52f99b0f9bcfed0c31d848c798d 100644 --- a/drivers/gpu/drm/tests/drm_modes_test.c +++ b/drivers/gpu/drm/tests/drm_modes_test.c @@ -38,17 +38,21 @@ static int drm_test_modes_init(struct kunit *test) static void drm_test_modes_analog_tv_ntsc_480i(struct kunit *test) { struct drm_test_modes_priv *priv = test->priv; struct drm_display_mode *mode; + int ret; mode = drm_analog_tv_mode(priv->drm, DRM_MODE_TV_MODE_NTSC, 13500 * HZ_PER_KHZ, 720, 480, true); KUNIT_ASSERT_NOT_NULL(test, mode); + ret = drm_kunit_add_mode_destroy_action(test, mode); + KUNIT_ASSERT_EQ(test, ret, 0); + KUNIT_EXPECT_EQ(test, drm_mode_vrefresh(mode), 60); KUNIT_EXPECT_EQ(test, mode->hdisplay, 720); /* BT.601 defines hsync_start at 736 for 480i */ KUNIT_EXPECT_EQ(test, mode->hsync_start, 736); @@ -68,34 +72,45 @@ static void drm_test_modes_analog_tv_ntsc_480i(struct kunit *test) static void drm_test_modes_analog_tv_ntsc_480i_inlined(struct kunit *test) { struct drm_test_modes_priv *priv = test->priv; struct drm_display_mode *expected, *mode; + int ret; expected = drm_analog_tv_mode(priv->drm, DRM_MODE_TV_MODE_NTSC, 13500 * HZ_PER_KHZ, 720, 480, true); KUNIT_ASSERT_NOT_NULL(test, expected); + ret = drm_kunit_add_mode_destroy_action(test, expected); + KUNIT_ASSERT_EQ(test, ret, 0); + mode = drm_mode_analog_ntsc_480i(priv->drm); KUNIT_ASSERT_NOT_NULL(test, mode); + ret = drm_kunit_add_mode_destroy_action(test, mode); + KUNIT_ASSERT_EQ(test, ret, 0); + KUNIT_EXPECT_TRUE(test, drm_mode_equal(expected, mode)); } static void drm_test_modes_analog_tv_pal_576i(struct kunit *test) { struct drm_test_modes_priv *priv = test->priv; struct drm_display_mode *mode; + int ret; mode = drm_analog_tv_mode(priv->drm, DRM_MODE_TV_MODE_PAL, 13500 * HZ_PER_KHZ, 720, 576, true); KUNIT_ASSERT_NOT_NULL(test, mode); + ret = drm_kunit_add_mode_destroy_action(test, mode); + KUNIT_ASSERT_EQ(test, ret, 0); + KUNIT_EXPECT_EQ(test, drm_mode_vrefresh(mode), 50); KUNIT_EXPECT_EQ(test, mode->hdisplay, 720); /* BT.601 defines hsync_start at 732 for 576i */ KUNIT_EXPECT_EQ(test, mode->hsync_start, 732); @@ -115,20 +130,27 @@ static void drm_test_modes_analog_tv_pal_576i(struct kunit *test) static void drm_test_modes_analog_tv_pal_576i_inlined(struct kunit *test) { struct drm_test_modes_priv *priv = test->priv; struct drm_display_mode *expected, *mode; + int ret; expected = drm_analog_tv_mode(priv->drm, DRM_MODE_TV_MODE_PAL, 13500 * HZ_PER_KHZ, 720, 576, true); KUNIT_ASSERT_NOT_NULL(test, expected); + ret = drm_kunit_add_mode_destroy_action(test, expected); + KUNIT_ASSERT_EQ(test, ret, 0); + mode = drm_mode_analog_pal_576i(priv->drm); KUNIT_ASSERT_NOT_NULL(test, mode); + ret = drm_kunit_add_mode_destroy_action(test, mode); + KUNIT_ASSERT_EQ(test, ret, 0); + KUNIT_EXPECT_TRUE(test, drm_mode_equal(expected, mode)); } static void drm_test_modes_analog_tv_mono_576i(struct kunit *test) { From patchwork Tue Apr 8 07:34:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14042328 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 936BDC3600C for ; Tue, 8 Apr 2025 07:34:44 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id EE80810E5F6; Tue, 8 Apr 2025 07:34:43 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.b="o5+G5drY"; dkim-atps=neutral Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4BBAC10E5F5 for ; Tue, 8 Apr 2025 07:34:42 +0000 (UTC) Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 41C385C59F4; Tue, 8 Apr 2025 07:32:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C3980C4CEEA; Tue, 8 Apr 2025 07:34:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744097678; bh=/Wbv6r/x71/9TjKPjY3ITwX7nItTXEXLOZ+jDR5+yns=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=o5+G5drYWrGfZe6gBC97ttkONB4VkJaP87qX5ZoAxAEWIeeBwBku5h96sMrNfd9LN 4c1lGHccW5NSfsGkXx7HI/OfDqNx2tSUPSyN6LWt6AY57Ia4gXnq5lmQ0kQB2WtqO9 VY0UPpeKQ83TER4FwkP0EsfhaqelxafAq9ExQIzlUSEGSQBzxFaBe8oPVQzwNJp+ZC Xrcn7Ft0P7cqmY9N9DE4XHBVw9i6WS4yWiHDtnu+9nactdhfsDObcT/MU4uCNA8zP1 BxcxHFxlrP8mZLeDpQSoi5MHtF0c5onYTDGWaDcVAjN37LxjCeidjeZPHl5j/jobQS JOn5WT/sXbbtQ== From: Maxime Ripard Date: Tue, 08 Apr 2025 09:34:12 +0200 Subject: [PATCH 6/7] drm/tests: modes: Fix drm_display_mode memory leak MIME-Version: 1.0 Message-Id: <20250408-drm-kunit-drm-display-mode-memleak-v1-6-996305a2e75a@kernel.org> References: <20250408-drm-kunit-drm-display-mode-memleak-v1-0-996305a2e75a@kernel.org> In-Reply-To: <20250408-drm-kunit-drm-display-mode-memleak-v1-0-996305a2e75a@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter Cc: Philipp Stanner , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1607; i=mripard@kernel.org; h=from:subject:message-id; bh=/Wbv6r/x71/9TjKPjY3ITwX7nItTXEXLOZ+jDR5+yns=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOlfLlauiZ539Z4mHztL1ncFv5h3OwNDKi+sdg/T/27+N ODQkXCmjlIWBjEuBlkxRZYYYfMlcadmve5k45sHM4eVCWQIAxenAExEWo7hn96N+OJi3t1FOdt3 zRMovNZsZV8Q/v230KnPC3Ry7y4L/srIcPbwlcSo0k8ntn7T3HGgvbnp3Wl9WcsCtgb2olUa369 E8wEA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" drm_analog_tv_mode() and its variants return a drm_display_mode that needs to be destroyed later one. The drm_test_modes_analog_tv_mono_576i() test never does however, which leads to a memory leak. Let's make sure it's freed. Closes: https://lore.kernel.org/dri-devel/a7655158a6367ac46194d57f4b7433ef0772a73e.camel@mailbox.org/ Fixes: e31538489908 ("drm/tests: Add tests for the new Monochrome value of tv_mode") Signed-off-by: Maxime Ripard --- drivers/gpu/drm/tests/drm_modes_test.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/gpu/drm/tests/drm_modes_test.c b/drivers/gpu/drm/tests/drm_modes_test.c index 7ba646d87856f52f99b0f9bcfed0c31d848c798d..f5b20f92df8be73ad9ef46aedae8b855e637e4dd 100644 --- a/drivers/gpu/drm/tests/drm_modes_test.c +++ b/drivers/gpu/drm/tests/drm_modes_test.c @@ -154,17 +154,21 @@ static void drm_test_modes_analog_tv_pal_576i_inlined(struct kunit *test) static void drm_test_modes_analog_tv_mono_576i(struct kunit *test) { struct drm_test_modes_priv *priv = test->priv; struct drm_display_mode *mode; + int ret; mode = drm_analog_tv_mode(priv->drm, DRM_MODE_TV_MODE_MONOCHROME, 13500 * HZ_PER_KHZ, 720, 576, true); KUNIT_ASSERT_NOT_NULL(test, mode); + ret = drm_kunit_add_mode_destroy_action(test, mode); + KUNIT_ASSERT_EQ(test, ret, 0); + KUNIT_EXPECT_EQ(test, drm_mode_vrefresh(mode), 50); KUNIT_EXPECT_EQ(test, mode->hdisplay, 720); /* BT.601 defines hsync_start at 732 for 576i */ KUNIT_EXPECT_EQ(test, mode->hsync_start, 732); From patchwork Tue Apr 8 07:34:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 14042327 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CA99EC369A1 for ; Tue, 8 Apr 2025 07:34:43 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 49A5610E5F5; Tue, 8 Apr 2025 07:34:43 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.b="OxqjfCoH"; dkim-atps=neutral Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4E02E10E5F6 for ; Tue, 8 Apr 2025 07:34:42 +0000 (UTC) Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id D591AA48EA8; Tue, 8 Apr 2025 07:29:12 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DC865C4CEE5; Tue, 8 Apr 2025 07:34:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744097681; bh=0zYH8GXeZCdhYRoG6dWvpLAyDo/PjwqMRCxfB3+ZTls=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=OxqjfCoHeIzklkN3oG4EVzuqyc9X/pvQAIq/xNsehgw+35KEcE96QHRpS1C7c49JU f6vrE3zjpamudNu3rGa1qCx0NEoNO5LhpurfO3AUliIQXj80hRuLM7TVjMu9LlCCeu 3fhYvFpCfYiT9pM4hF75gP0EgGi6kUsZzrrUJ/GDJPTbBotd7pGDgaSMyQuIiHKY9l ntxDpYXuX5o2swJKR1G5HqhEGX2ogxVkApOwowmdBluI/mqyr1Jhnh0lFIjRO9rAzL +obSiOlp383JzdXmjIKID8AKHyXyjadJb5gHxW0uD7jeYo7QPIv7Dd2UudFApJW/SO Cj3QaqI/NTLsw== From: Maxime Ripard Date: Tue, 08 Apr 2025 09:34:13 +0200 Subject: [PATCH 7/7] drm/tests: probe-helper: Fix drm_display_mode memory leak MIME-Version: 1.0 Message-Id: <20250408-drm-kunit-drm-display-mode-memleak-v1-7-996305a2e75a@kernel.org> References: <20250408-drm-kunit-drm-display-mode-memleak-v1-0-996305a2e75a@kernel.org> In-Reply-To: <20250408-drm-kunit-drm-display-mode-memleak-v1-0-996305a2e75a@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter Cc: Philipp Stanner , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2493; i=mripard@kernel.org; h=from:subject:message-id; bh=0zYH8GXeZCdhYRoG6dWvpLAyDo/PjwqMRCxfB3+ZTls=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDOlfLlat09LI9P9u3f9b1z6mwMYrZV/Uf/n778/LvMj7e CRvqffGjlIWBjEuBlkxRZYYYfMlcadmve5k45sHM4eVCWQIAxenAExk2glGhrt6G5Zk17iFJfRc PjA1tVtnXa/vL8Wjp5zXfv3W+/cuaxUjw17n1h1qgnN1Nv88aHFYY7tOz2PW6scb3zjHBa2Km+h dyQgA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" drm_analog_tv_mode() and its variants return a drm_display_mode that needs to be destroyed later one. The drm_test_connector_helper_tv_get_modes_check() test never does however, which leads to a memory leak. Let's make sure it's freed. Closes: https://lore.kernel.org/dri-devel/a7655158a6367ac46194d57f4b7433ef0772a73e.camel@mailbox.org/ Fixes: 1e4a91db109f ("drm/probe-helper: Provide a TV get_modes helper") Signed-off-by: Maxime Ripard --- drivers/gpu/drm/tests/drm_probe_helper_test.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/tests/drm_probe_helper_test.c b/drivers/gpu/drm/tests/drm_probe_helper_test.c index bc09ff38aca18eb06dc476310e1dbf372bc5545c..db0e4f5df275e8473ec916ed7a7cf16db96b81c5 100644 --- a/drivers/gpu/drm/tests/drm_probe_helper_test.c +++ b/drivers/gpu/drm/tests/drm_probe_helper_test.c @@ -96,11 +96,11 @@ drm_test_connector_helper_tv_get_modes_check(struct kunit *test) const struct drm_connector_helper_tv_get_modes_test *params = test->param_value; struct drm_probe_helper_test_priv *priv = test->priv; struct drm_connector *connector = &priv->connector; struct drm_cmdline_mode *cmdline = &connector->cmdline_mode; struct drm_display_mode *mode; - const struct drm_display_mode *expected; + struct drm_display_mode *expected; size_t len; int ret; if (params->cmdline) { cmdline->tv_mode_specified = true; @@ -132,10 +132,13 @@ drm_test_connector_helper_tv_get_modes_check(struct kunit *test) expected = params->expected_modes[0](priv->drm); KUNIT_ASSERT_NOT_NULL(test, expected); KUNIT_EXPECT_TRUE(test, drm_mode_equal(mode, expected)); KUNIT_EXPECT_TRUE(test, mode->type & DRM_MODE_TYPE_PREFERRED); + + ret = drm_kunit_add_mode_destroy_action(test, expected); + KUNIT_ASSERT_EQ(test, ret, 0); } if (params->num_expected_modes >= 2) { mode = list_next_entry(mode, head); KUNIT_ASSERT_NOT_NULL(test, mode); @@ -143,10 +146,13 @@ drm_test_connector_helper_tv_get_modes_check(struct kunit *test) expected = params->expected_modes[1](priv->drm); KUNIT_ASSERT_NOT_NULL(test, expected); KUNIT_EXPECT_TRUE(test, drm_mode_equal(mode, expected)); KUNIT_EXPECT_FALSE(test, mode->type & DRM_MODE_TYPE_PREFERRED); + + ret = drm_kunit_add_mode_destroy_action(test, expected); + KUNIT_ASSERT_EQ(test, ret, 0); } mutex_unlock(&priv->drm->mode_config.mutex); }