[PATCH v2 2/3] kunit: provide kunit_platform_device_unregister()

From: Bartosz Golaszewski

Date: Wed May 20 2026 - 04:43:25 EST


Tests may want to unregister a platform device as part of the test case
logic. Using the regular platform_device_register() with kunit
assertions may result in a platform device leak or otherwise requires
cumbersome error handling. Provide a function that unregisters a
kunit-managed platform device and drops the release action from the
test's list.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxxxxxxxx>
---
include/kunit/platform_device.h | 2 ++
lib/kunit/platform.c | 15 +++++++++++++++
2 files changed, 17 insertions(+)

diff --git a/include/kunit/platform_device.h b/include/kunit/platform_device.h
index 8cad6e1c3e7efba862862b579089f2f317784a73..eee565d5d1d35c1d1bc82b45eb91d21d00c68428 100644
--- a/include/kunit/platform_device.h
+++ b/include/kunit/platform_device.h
@@ -14,6 +14,8 @@ int kunit_platform_device_add(struct kunit *test, struct platform_device *pdev);
struct platform_device *
kunit_platform_device_register_full(struct kunit *test,
const struct platform_device_info *pdevinfo);
+void kunit_platform_device_unregister(struct kunit *test,
+ struct platform_device *pdev);

int kunit_platform_device_prepare_wait_for_probe(struct kunit *test,
struct platform_device *pdev,
diff --git a/lib/kunit/platform.c b/lib/kunit/platform.c
index 583b50b538c79599ebbf33e261fe2e9ced35efa9..ccfbc70b4e12817f60490e8146f7f7773c9a4dbb 100644
--- a/lib/kunit/platform.c
+++ b/lib/kunit/platform.c
@@ -161,6 +161,21 @@ kunit_platform_device_register_full(struct kunit *test,
}
EXPORT_SYMBOL_GPL(kunit_platform_device_register_full);

+/**
+ * kunit_platform_device_unregister() - Unregister a KUnit-managed platform device
+ * @test: test context
+ * @pdev: platform device to unregister
+ *
+ * Unregister a test-managed platform device and cancel its release action.
+ */
+void kunit_platform_device_unregister(struct kunit *test,
+ struct platform_device *pdev)
+{
+ kunit_remove_action(test, platform_device_unregister_wrapper, pdev);
+ platform_device_unregister(pdev);
+}
+EXPORT_SYMBOL_GPL(kunit_platform_device_unregister);
+
struct kunit_platform_device_probe_nb {
struct completion *x;
struct device *dev;

--
2.47.3