drm/tests: Use KUNIT_DEFINE_ACTION_WRAPPER()
authorDavid Gow <davidgow@google.com>
Tue, 28 Nov 2023 07:24:06 +0000 (15:24 +0800)
committerShuah Khan <skhan@linuxfoundation.org>
Mon, 18 Dec 2023 20:21:14 +0000 (13:21 -0700)
In order to pass functions to kunit_add_action(), they need to be of the
kunit_action_t type. While casting the function pointer can work, it
will break control-flow integrity.

drm_kunit_helpers already defines wrappers, but we now have a macro
which does this automatically. Using this greatly reduces the
boilerplate needed.

Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: David Gow <davidgow@google.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
drivers/gpu/drm/tests/drm_kunit_helpers.c

index bccb33b900f390ff070b7e45241d57603f890cab..c251e6b34de0576ea1cc562a17914cc725ed1e29 100644 (file)
@@ -27,27 +27,15 @@ static struct platform_driver fake_platform_driver = {
        },
 };
 
-static void kunit_action_platform_driver_unregister(void *ptr)
-{
-       struct platform_driver *drv = ptr;
-
-       platform_driver_unregister(drv);
-
-}
-
-static void kunit_action_platform_device_put(void *ptr)
-{
-       struct platform_device *pdev = ptr;
-
-       platform_device_put(pdev);
-}
-
-static void kunit_action_platform_device_del(void *ptr)
-{
-       struct platform_device *pdev = ptr;
-
-       platform_device_del(pdev);
-}
+KUNIT_DEFINE_ACTION_WRAPPER(kunit_action_platform_driver_unregister,
+                           platform_driver_unregister,
+                           struct platform_driver *);
+KUNIT_DEFINE_ACTION_WRAPPER(kunit_action_platform_device_put,
+                           platform_device_put,
+                           struct platform_device *);
+KUNIT_DEFINE_ACTION_WRAPPER(kunit_action_platform_device_del,
+                           platform_device_del,
+                           struct platform_device *);
 
 /**
  * drm_kunit_helper_alloc_device - Allocate a mock device for a KUnit test