From nobody Thu Dec 18 17:50:18 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D315B263C91 for ; Tue, 8 Apr 2025 07:34:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744097664; cv=none; b=LwKNYfEUkjIZdGFC78/Zud/CAvCazuJVMlZ17UBRGUoQk3HIpZYV1RhHhHQN1f6LAJkIz7BiMaUD0gBnfcUK/PfmqjgX52QV4rNNelr64IaP5+eXf9kaGdZSHCNgAARtf6TlxRhBrFFy/g8T+DxIrbTH0c+KU9q+KCIulPWkSzI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744097664; c=relaxed/simple; bh=T2L/jwqbXEm6QSAc1uHVXlkQ9aAbFLh15AGe7Va8SrU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KCh5PiLJDuBWOF5ozSVMB0hUup+c3sCaA6KN/SalRI2gGamUU1p5MBPz1RrNQx6MiDWqAWEBCqWHOKndg7kz8bT+PELsrEGFCGzPwG2wEYEALOic0T99QjwPOKzksHoQhin8AKQ+JnYCK/1iLNb6muqE8Fv39pnZBRwZfWrwuPg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=uqzQPCux; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="uqzQPCux" 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 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 Reviewed-by: Thomas Zimmermann --- 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/te= sts/drm_kunit_helpers.c index a4eb68f0decca15988105b9d58266e3871934a8b..7f540f9e4d98cc507e51b486edb= 99177a23011d1 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 =3D ptr; =20 drm_mode_destroy(NULL, mode); } =20 +/** + * drm_kunit_add_mode_destroy_action() - Add a drm_destroy_mode kunit acti= on + * @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_helper= s.h index 11d59ce0bac0bbec07ae5f07ed9710cf01d73f09..1c62d1d4458cae3a6883a0daaf4= 2b8431c4a213a 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); =20 +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); =20 #endif // DRM_KUNIT_HELPERS_H_ --=20 2.49.0 From nobody Thu Dec 18 17:50:18 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9A7552641F5 for ; Tue, 8 Apr 2025 07:34:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744097667; cv=none; b=Ex9MIp+ZtVVsswbQ9D3yaSIA8oyX8WbcOn1IqkCZgxrRWUaWedRjHBfxBy387FrrO8kyTx12RIRlvLjZrsbRVQXsYkpVtLM1ZewdhO9akjVQQjAXtRxKxAhzcyOocsfA08bD9myCCIxNsiBaLAamBzJqwmDl5gweNcpT+OD4RDM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744097667; c=relaxed/simple; bh=dWe7Fz+nhJsB3QR1kEnLv2yiss8BTbIes6Bs4jDjbNI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HFsg8GEBfkxTSgbDZPGy66gPVB+XnFMKmcXnNnPioRKKgqSlW/T0tfMo/ZDUl1WIgT1a+EAL061DAylUNGnwl5oAvh/N3KyrEETHzW/+WIDwFOL9hi5nFoW1MG0fkLaflAOnrA6ee9fijVrp2I040LDwLFvUgSumGF/5YbgawSI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UoOAfjsd; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="UoOAfjsd" 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 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/a7655158a6367ac46194d57f4b7433ef0= 772a73e.camel@mailbox.org/ Fixes: 8fc0380f6ba7 ("drm/client: Add some tests for drm_connector_pick_cmd= line_mode()") Signed-off-by: Maxime Ripard Reviewed-by: Thomas Zimmermann --- 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..3e9518d7b8b7eb92f1be3ce376d= 850cbab638d10 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(stru= ct kunit *test) int ret; =20 expected_mode =3D drm_mode_find_dmt(priv->drm, 1920, 1080, 60, false); KUNIT_ASSERT_NOT_NULL(test, expected_mode); =20 + ret =3D 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)); =20 --=20 2.49.0 From nobody Thu Dec 18 17:50:18 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7267F263F2E for ; Tue, 8 Apr 2025 07:34:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744097670; cv=none; b=OeDlIzAK1FBPo7i0Td5pri6nSfjek7UP4tRgqnEpY3Fb+leIO5JbVgtj7gZu3A1Y1iQX5aprnb8zAZVE1RFIJibANqkweGbpAe/TPdb6wgXcrMvOUCRgCNPBHWDHd29ZZEDqAwpv8FJeNhy2ftHdsFhMNVCi8Yz9w7RENzVbxSM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744097670; c=relaxed/simple; bh=RnnIZ34b3oTsJIkOQPflExxRv0VozyVKDB6J0hBGD/E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=s6wBrtGomczkDkicZdPf7oksfuyIlSdttHDb97nC9zjQDg7orAq5lOBa2UsXCVYQloA83pluZzBTU9m6g1oUCopkmrhroxQ+9RpWF2r4jqPtfWfcShfRHaQ5QRvCll5rByaUiLLWRqKAJmqFuioc1HvpAo6/wEaYuccGCkVbdg4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Mhh/mKKV; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Mhh/mKKV" 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 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/a7655158a6367ac46194d57f4b7433ef0= 772a73e.camel@mailbox.org/ Fixes: fedcaf726f54 ("drm/modes: Properly generate a drm_display_mode from = a named mode") Signed-off-by: Maxime Ripard Reviewed-by: Thomas Zimmermann --- 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..b2fdb1a774fe69c4e14b718324d= 7380f900bd548 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 =3D test->param= _value; struct drm_client_modeset_test_priv *priv =3D test->priv; struct drm_device *drm =3D priv->drm; struct drm_connector *connector =3D &priv->connector; struct drm_cmdline_mode *cmdline_mode =3D &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 =3D params->cmdline; int ret; =20 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); =20 expected_mode =3D params->func(drm); KUNIT_ASSERT_NOT_NULL(test, expected_mode); =20 + ret =3D 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)); } =20 static const struct drm_connector_pick_cmdline_mode_test drm_connector_pick_cmdline_mod= e_tests[] =3D { --=20 2.49.0 From nobody Thu Dec 18 17:50:18 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F1F4126461E for ; Tue, 8 Apr 2025 07:34:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744097673; cv=none; b=N+06YAP+DnVbHCr5dUE4ErL03OmplmC0f6hb4ZVkulzpput0raxKFpdCQnjI2D9OkDinlfQno2oLTWeywqOlS2Btta/JEXEJ5LhSh+0mlIYOoKzMrRrk5t0/LPHfhwPejehwQ3CS0xcclTxeKNBNJzO6SDGJ3OSLjZGY9lJQb8Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744097673; c=relaxed/simple; bh=F3ezxU5SGoiD8ddVs6HKsPqrpZe4wJCeXDRAqLCrgfE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=k4n6kKpydwPrW+eKITVaUk1yW8W4qNFrXa0p98gyWnyVs6/zefStLPXQGRit//DXEVwqr7aMa/M9yUD7tcwjmO7LoVkyF0rCSI/OkdwZxe1cQrakU9yE7Rp1ByNoDPh5M7n0ZUc8+2CojxH3DBRnIIErVTvoVhbwoN5q3TKGmQI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gy0vGJzC; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="gy0vGJzC" 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 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/a7655158a6367ac46194d57f4b7433ef0= 772a73e.camel@mailbox.org/ Fixes: e691c9992ae1 ("drm/modes: Introduce the tv_mode property as a comman= d-line option") Signed-off-by: Maxime Ripard Reviewed-by: Thomas Zimmermann --- 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..1cfcb597b088b4d159a5fb10a30= 9338cb73abbe9 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 @@ */ =20 #include =20 #include +#include #include =20 static const struct drm_connector no_connector =3D {}; =20 static void drm_test_cmdline_force_e_only(struct kunit *test) @@ -953,12 +954,19 @@ struct drm_cmdline_tv_option_test { }; =20 static void drm_test_cmdline_tv_options(struct kunit *test) { const struct drm_cmdline_tv_option_test *params =3D test->param_value; - const struct drm_display_mode *expected_mode =3D params->mode_fn(NULL); + struct drm_display_mode *expected_mode; struct drm_cmdline_mode mode =3D { }; + int ret; + + expected_mode =3D params->mode_fn(NULL); + KUNIT_ASSERT_NOT_NULL(test, expected_mode); + + ret =3D drm_kunit_add_mode_destroy_action(test, expected_mode); + KUNIT_ASSERT_EQ(test, ret, 0); =20 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); --=20 2.49.0 From nobody Thu Dec 18 17:50:18 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F3D6926463A for ; Tue, 8 Apr 2025 07:34:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744097676; cv=none; b=HoRHKBAyoCNH75GcwghGV+/1e3nsJGjXG+r8rymoT5AM/DKFaHubp47l16xA8t9lvzHd/pHiG/g1CssUKXU5tJHeEk9lb4BpGU0sl1dwk48jcPE71+k1TmnIu0suGrqM0POtnlss6sfqdosn1WMFz68+qFS9+N3nG2Bc/ZQQPqQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744097676; c=relaxed/simple; bh=ghSfrPXI2nSYR1VXeWBWO2imBz8Oggxn/25Nh3fSTVo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RDp5zN7DTnP4OcDwgUSxAMRVXnqkG2xA6drRnE+YenSJNBd4Wb8L0As2BHeq5o3gZsicn8JPDhnV6j8bYxBTSo203dLe4AwSkf9I3LIIJEHrK8gMJ8jIIpZ0Pic7uFaD5SOL52dI1OQtVkZXP5MqVOxLqYU4e425080azdNIxbw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=kbCrWC8O; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="kbCrWC8O" 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 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/a7655158a6367ac46194d57f4b7433ef0= 772a73e.camel@mailbox.org/ Fixes: 4fcd238560ee ("drm/modes: Add a function to generate analog display = modes") Signed-off-by: Maxime Ripard Reviewed-by: Thomas Zimmermann --- 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..7ba646d87856f52f99b0f9bcfed= 0c31d848c798d 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) =20 static void drm_test_modes_analog_tv_ntsc_480i(struct kunit *test) { struct drm_test_modes_priv *priv =3D test->priv; struct drm_display_mode *mode; + int ret; =20 mode =3D drm_analog_tv_mode(priv->drm, DRM_MODE_TV_MODE_NTSC, 13500 * HZ_PER_KHZ, 720, 480, true); KUNIT_ASSERT_NOT_NULL(test, mode); =20 + ret =3D 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); =20 /* 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 k= unit *test) =20 static void drm_test_modes_analog_tv_ntsc_480i_inlined(struct kunit *test) { struct drm_test_modes_priv *priv =3D test->priv; struct drm_display_mode *expected, *mode; + int ret; =20 expected =3D drm_analog_tv_mode(priv->drm, DRM_MODE_TV_MODE_NTSC, 13500 * HZ_PER_KHZ, 720, 480, true); KUNIT_ASSERT_NOT_NULL(test, expected); =20 + ret =3D drm_kunit_add_mode_destroy_action(test, expected); + KUNIT_ASSERT_EQ(test, ret, 0); + mode =3D drm_mode_analog_ntsc_480i(priv->drm); KUNIT_ASSERT_NOT_NULL(test, mode); =20 + ret =3D drm_kunit_add_mode_destroy_action(test, mode); + KUNIT_ASSERT_EQ(test, ret, 0); + KUNIT_EXPECT_TRUE(test, drm_mode_equal(expected, mode)); } =20 static void drm_test_modes_analog_tv_pal_576i(struct kunit *test) { struct drm_test_modes_priv *priv =3D test->priv; struct drm_display_mode *mode; + int ret; =20 mode =3D drm_analog_tv_mode(priv->drm, DRM_MODE_TV_MODE_PAL, 13500 * HZ_PER_KHZ, 720, 576, true); KUNIT_ASSERT_NOT_NULL(test, mode); =20 + ret =3D 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); =20 /* 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) =20 static void drm_test_modes_analog_tv_pal_576i_inlined(struct kunit *test) { struct drm_test_modes_priv *priv =3D test->priv; struct drm_display_mode *expected, *mode; + int ret; =20 expected =3D drm_analog_tv_mode(priv->drm, DRM_MODE_TV_MODE_PAL, 13500 * HZ_PER_KHZ, 720, 576, true); KUNIT_ASSERT_NOT_NULL(test, expected); =20 + ret =3D drm_kunit_add_mode_destroy_action(test, expected); + KUNIT_ASSERT_EQ(test, ret, 0); + mode =3D drm_mode_analog_pal_576i(priv->drm); KUNIT_ASSERT_NOT_NULL(test, mode); =20 + ret =3D drm_kunit_add_mode_destroy_action(test, mode); + KUNIT_ASSERT_EQ(test, ret, 0); + KUNIT_EXPECT_TRUE(test, drm_mode_equal(expected, mode)); } =20 static void drm_test_modes_analog_tv_mono_576i(struct kunit *test) { --=20 2.49.0 From nobody Thu Dec 18 17:50:18 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A1F29264A6D for ; Tue, 8 Apr 2025 07:34:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744097678; cv=none; b=LJldu2BPQ1kBmAne07Ya0KlFN7yVrcAdLd+1MuKAueJM1VZfKb3+urYH10T2z4wNpK2cFDuEBmtNV9od2vAhcBL4D041ppXNC1Drr6JhdFo9G9mOH74Er4veZ2dwuBjuutUNVwpM6XW/xmV/RM+6Us8y4BV0V8fqjHEGm1F5haU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744097678; c=relaxed/simple; bh=/Wbv6r/x71/9TjKPjY3ITwX7nItTXEXLOZ+jDR5+yns=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Wkt0HK8pdmPEFOdXBxrzqvExd5Oh7QjtsBy2cQ11EhOMSJa0QkaKXtPs10on5OBy51+TO0XTq9nXpZ50XLqjA8bpO7Y8c7Z3rP1X5cyyV8t5g/KZsgja5vXK3xCU+x2sZC6YU9z/M17ZrZm5KTKwluFhOQYq0gKKR2a70LnKaHY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=o5+G5drY; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="o5+G5drY" 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 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/a7655158a6367ac46194d57f4b7433ef0= 772a73e.camel@mailbox.org/ Fixes: e31538489908 ("drm/tests: Add tests for the new Monochrome value of = tv_mode") Signed-off-by: Maxime Ripard Reviewed-by: Thomas Zimmermann --- 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..f5b20f92df8be73ad9ef46aedae= 8b855e637e4dd 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) =20 static void drm_test_modes_analog_tv_mono_576i(struct kunit *test) { struct drm_test_modes_priv *priv =3D test->priv; struct drm_display_mode *mode; + int ret; =20 mode =3D drm_analog_tv_mode(priv->drm, DRM_MODE_TV_MODE_MONOCHROME, 13500 * HZ_PER_KHZ, 720, 576, true); KUNIT_ASSERT_NOT_NULL(test, mode); =20 + ret =3D 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); =20 /* BT.601 defines hsync_start at 732 for 576i */ KUNIT_EXPECT_EQ(test, mode->hsync_start, 732); --=20 2.49.0 From nobody Thu Dec 18 17:50:18 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BD23B263F46 for ; Tue, 8 Apr 2025 07:34:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744097682; cv=none; b=vDm4TbH1YLbu1ZV06gFJrfwqwSTKvTvSE+bHtbi5IuuSgYOctEnV3oHK0r6RvOb5dZqA+3BdHq0L2+FmTapiPw+oUaeOAxexjCucneirNjJa/6PjwoCG/awmRE0kG0BQxElAs5KPhQzfYdBMnfWpcC16YTxBGvPKKHWaKe2vqXU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744097682; c=relaxed/simple; bh=0zYH8GXeZCdhYRoG6dWvpLAyDo/PjwqMRCxfB3+ZTls=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pF0wRBYaSQJ1+y0laNff4d4t2sFaSyKo8qTKYXfaz4QY+OOrxRqroY5hWONvHY4YJtJy+EvwiBppU9ARv/hPvyRJfoIPuPtS2VCd7qFEpqcLZpY6OZ9gRdhdOczEqL+44aY1IP/0AXg8+2e5UaXMf1aDDZOfEkjlWKuk6GM+W9A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OxqjfCoH; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="OxqjfCoH" 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 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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 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/a7655158a6367ac46194d57f4b7433ef0= 772a73e.camel@mailbox.org/ Fixes: 1e4a91db109f ("drm/probe-helper: Provide a TV get_modes helper") Signed-off-by: Maxime Ripard Reviewed-by: Thomas Zimmermann --- 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/dr= m/tests/drm_probe_helper_test.c index bc09ff38aca18eb06dc476310e1dbf372bc5545c..db0e4f5df275e8473ec916ed7a7= cf16db96b81c5 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 kun= it *test) const struct drm_connector_helper_tv_get_modes_test *params =3D test->par= am_value; struct drm_probe_helper_test_priv *priv =3D test->priv; struct drm_connector *connector =3D &priv->connector; struct drm_cmdline_mode *cmdline =3D &connector->cmdline_mode; struct drm_display_mode *mode; - const struct drm_display_mode *expected; + struct drm_display_mode *expected; size_t len; int ret; =20 if (params->cmdline) { cmdline->tv_mode_specified =3D true; @@ -132,10 +132,13 @@ drm_test_connector_helper_tv_get_modes_check(struct k= unit *test) expected =3D params->expected_modes[0](priv->drm); KUNIT_ASSERT_NOT_NULL(test, expected); =20 KUNIT_EXPECT_TRUE(test, drm_mode_equal(mode, expected)); KUNIT_EXPECT_TRUE(test, mode->type & DRM_MODE_TYPE_PREFERRED); + + ret =3D drm_kunit_add_mode_destroy_action(test, expected); + KUNIT_ASSERT_EQ(test, ret, 0); } =20 if (params->num_expected_modes >=3D 2) { mode =3D list_next_entry(mode, head); KUNIT_ASSERT_NOT_NULL(test, mode); @@ -143,10 +146,13 @@ drm_test_connector_helper_tv_get_modes_check(struct k= unit *test) expected =3D params->expected_modes[1](priv->drm); KUNIT_ASSERT_NOT_NULL(test, expected); =20 KUNIT_EXPECT_TRUE(test, drm_mode_equal(mode, expected)); KUNIT_EXPECT_FALSE(test, mode->type & DRM_MODE_TYPE_PREFERRED); + + ret =3D drm_kunit_add_mode_destroy_action(test, expected); + KUNIT_ASSERT_EQ(test, ret, 0); } =20 mutex_unlock(&priv->drm->mode_config.mutex); } =20 --=20 2.49.0