driver core: Make bus notifiers in right order in really_probe()
authorLu Baolu <baolu.lu@linux.intel.com>
Fri, 31 Dec 2021 03:39:01 +0000 (11:39 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 6 Jan 2022 14:47:41 +0000 (15:47 +0100)
If a driver cannot be bound to a device, the correct bus notifier order
should be:

 - BUS_NOTIFY_BIND_DRIVER: driver is about to be bound
 - BUS_NOTIFY_DRIVER_NOT_BOUND: driver failed to be bound

or no notifier if the failure happens before the actual binding.

The really_probe() notifies a BUS_NOTIFY_DRIVER_NOT_BOUND event without
a BUS_NOTIFY_BIND_DRIVER if .dma_configure() returns failure. This
change makes the notifiers in order.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Link: https://lore.kernel.org/r/20211231033901.2168664-3-baolu.lu@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/dd.c

index f6fac01..9eaaff2 100644 (file)
@@ -577,7 +577,7 @@ re_probe:
        if (dev->bus->dma_configure) {
                ret = dev->bus->dma_configure(dev);
                if (ret)
-                       goto sysfs_failed;
+                       goto pinctrl_bind_failed;
        }
 
        ret = driver_sysfs_add(dev);