[PATCH 1/2] Revert "drm/tests: Add test for drm_framebuffer_free()"

Jani Nikula jani.nikula at intel.com
Tue Sep 17 17:43:51 UTC 2024


This reverts commit d2194256049910d286cd6c308c2689df521d8842.

Intel CI consistently hits a WARN in drm_framebuffer_free() with this
test, because the fb->filp_head list is uninitialized.

Link: https://lore.kernel.org/r/87plp7ex27.fsf@intel.com
Fixes: d21942560499 ("drm/tests: Add test for drm_framebuffer_free()")
Cc: Carlos Eduardo Gallo Filho <gcarlos at disroot.org>
Cc: Maxime Ripard <mripard at kernel.org>
Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
Cc: Thomas Zimmermann <tzimmermann at suse.de>
Cc: Jeff Johnson <quic_jjohnson at quicinc.com>
Signed-off-by: Jani Nikula <jani.nikula at intel.com>
---
 drivers/gpu/drm/drm_mode_object.c            |  1 -
 drivers/gpu/drm/tests/drm_framebuffer_test.c | 50 --------------------
 2 files changed, 51 deletions(-)

diff --git a/drivers/gpu/drm/drm_mode_object.c b/drivers/gpu/drm/drm_mode_object.c
index e943205a2394..df4cc0e8e263 100644
--- a/drivers/gpu/drm/drm_mode_object.c
+++ b/drivers/gpu/drm/drm_mode_object.c
@@ -81,7 +81,6 @@ int drm_mode_object_add(struct drm_device *dev,
 {
 	return __drm_mode_object_add(dev, obj, obj_type, true, NULL);
 }
-EXPORT_SYMBOL_FOR_TESTS_ONLY(drm_mode_object_add);
 
 void drm_mode_object_register(struct drm_device *dev,
 			      struct drm_mode_object *obj)
diff --git a/drivers/gpu/drm/tests/drm_framebuffer_test.c b/drivers/gpu/drm/tests/drm_framebuffer_test.c
index 6ea04cc8f324..72314805839d 100644
--- a/drivers/gpu/drm/tests/drm_framebuffer_test.c
+++ b/drivers/gpu/drm/tests/drm_framebuffer_test.c
@@ -358,7 +358,6 @@ static const struct drm_framebuffer_test drm_framebuffer_create_cases[] = {
 struct drm_framebuffer_test_priv {
 	struct drm_device dev;
 	bool buffer_created;
-	bool buffer_freed;
 };
 
 static struct drm_framebuffer *fb_create_mock(struct drm_device *dev,
@@ -650,59 +649,10 @@ static void drm_test_framebuffer_init_dev_mismatch(struct kunit *test)
 	KUNIT_EXPECT_EQ(test, ret, -EINVAL);
 }
 
-static void destroy_free_mock(struct drm_framebuffer *fb)
-{
-	struct drm_framebuffer_test_priv *priv = container_of(fb->dev, typeof(*priv), dev);
-
-	priv->buffer_freed = true;
-}
-
-static struct drm_framebuffer_funcs framebuffer_funcs_free_mock = {
-	.destroy = destroy_free_mock,
-};
-
-/*
- * In summary, the drm_framebuffer_free() function must implicitly call
- * fb->funcs->destroy() and garantee that the framebufer object is unregistered
- * from the drm_device idr pool.
- */
-static void drm_test_framebuffer_free(struct kunit *test)
-{
-	struct drm_framebuffer_test_priv *priv = test->priv;
-	struct drm_device *dev = &priv->dev;
-	struct drm_mode_object *obj;
-	struct drm_framebuffer fb = {
-		.dev = dev,
-		.funcs = &framebuffer_funcs_free_mock,
-	};
-	int id, ret;
-
-	priv->buffer_freed = false;
-
-	/*
-	 * Mock	a framebuffer that was not unregistered	at the moment of the
-	 * drm_framebuffer_free() call.
-	 */
-	ret = drm_mode_object_add(dev, &fb.base, DRM_MODE_OBJECT_FB);
-	KUNIT_ASSERT_EQ(test, ret, 0);
-	id = fb.base.id;
-
-	drm_framebuffer_free(&fb.base.refcount);
-
-	/* The framebuffer object must be unregistered */
-	obj = drm_mode_object_find(dev, NULL, id, DRM_MODE_OBJECT_FB);
-	KUNIT_EXPECT_PTR_EQ(test, obj, NULL);
-	KUNIT_EXPECT_EQ(test, fb.base.id, 0);
-
-	/* Test if fb->funcs->destroy() was called */
-	KUNIT_EXPECT_EQ(test, priv->buffer_freed, true);
-}
-
 static struct kunit_case drm_framebuffer_tests[] = {
 	KUNIT_CASE_PARAM(drm_test_framebuffer_check_src_coords, check_src_coords_gen_params),
 	KUNIT_CASE(drm_test_framebuffer_cleanup),
 	KUNIT_CASE_PARAM(drm_test_framebuffer_create, drm_framebuffer_create_gen_params),
-	KUNIT_CASE(drm_test_framebuffer_free),
 	KUNIT_CASE(drm_test_framebuffer_init),
 	KUNIT_CASE(drm_test_framebuffer_init_bad_format),
 	KUNIT_CASE(drm_test_framebuffer_init_dev_mismatch),
-- 
2.39.2



More information about the dri-devel mailing list