]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
component: do not try to unbind unbound components
authorJohan Hovold <johan+linaro@kernel.org>
Fri, 28 Feb 2025 08:18:24 +0000 (09:18 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 15 Apr 2025 16:05:40 +0000 (18:05 +0200)
Error handling is apparently hard and driver authors often get it wrong.

Continue to warn but do not try to unbind components that have never
been bound in order to avoid crashing systems where such a buggy
teardown path is hit.

Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Link: https://lore.kernel.org/r/20250228081824.4640-1-johan+linaro@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/component.c

index abe60eb45c559575ec915371a7da6dcff1a8251a..024ad9471b8a407dfdb157853b0bd1d35cfe596d 100644 (file)
@@ -586,7 +586,8 @@ EXPORT_SYMBOL_GPL(component_master_is_bound);
 static void component_unbind(struct component *component,
        struct aggregate_device *adev, void *data)
 {
-       WARN_ON(!component->bound);
+       if (WARN_ON(!component->bound))
+               return;
 
        dev_dbg(adev->parent, "unbinding %s component %p (ops %ps)\n",
                dev_name(component->dev), component, component->ops);