driver core: move driver_find() to bus.c
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 8 Feb 2023 11:13:23 +0000 (12:13 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Feb 2023 09:43:31 +0000 (10:43 +0100)
This function really is a bus function, not a driver one, so move it
from driver.c to bus.c so that we can clean up some internal bus logic
easier.

Cc: "Rafael J. Wysocki" <rafael@kernel.org>
Link: https://lore.kernel.org/r/20230208111330.439504-15-gregkh@linuxfoundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/bus.c
drivers/base/driver.c

index 87c44661dcada947d0a6e953a47c22dec63ee182..1040c724e50ca98a67a3b4a18d07e8a64765ceb8 100644 (file)
@@ -1288,6 +1288,33 @@ int subsys_virtual_register(struct bus_type *subsys,
 }
 EXPORT_SYMBOL_GPL(subsys_virtual_register);
 
+/**
+ * driver_find - locate driver on a bus by its name.
+ * @name: name of the driver.
+ * @bus: bus to scan for the driver.
+ *
+ * Call kset_find_obj() to iterate over list of drivers on
+ * a bus to find driver by name. Return driver if found.
+ *
+ * This routine provides no locking to prevent the driver it returns
+ * from being unregistered or unloaded while the caller is using it.
+ * The caller is responsible for preventing this.
+ */
+struct device_driver *driver_find(const char *name, struct bus_type *bus)
+{
+       struct kobject *k = kset_find_obj(bus->p->drivers_kset, name);
+       struct driver_private *priv;
+
+       if (k) {
+               /* Drop reference added by kset_find_obj() */
+               kobject_put(k);
+               priv = to_driver(k);
+               return priv->driver;
+       }
+       return NULL;
+}
+EXPORT_SYMBOL_GPL(driver_find);
+
 int __init buses_init(void)
 {
        bus_kset = kset_create_and_add("bus", &bus_uevent_ops, NULL);
index 676b6275d5b53606caba09373d7480c7ca073d1a..aa5e5166a6719717bfd0de662d5f8bfcdfe05eeb 100644 (file)
@@ -274,30 +274,3 @@ void driver_unregister(struct device_driver *drv)
        bus_remove_driver(drv);
 }
 EXPORT_SYMBOL_GPL(driver_unregister);
-
-/**
- * driver_find - locate driver on a bus by its name.
- * @name: name of the driver.
- * @bus: bus to scan for the driver.
- *
- * Call kset_find_obj() to iterate over list of drivers on
- * a bus to find driver by name. Return driver if found.
- *
- * This routine provides no locking to prevent the driver it returns
- * from being unregistered or unloaded while the caller is using it.
- * The caller is responsible for preventing this.
- */
-struct device_driver *driver_find(const char *name, struct bus_type *bus)
-{
-       struct kobject *k = kset_find_obj(bus->p->drivers_kset, name);
-       struct driver_private *priv;
-
-       if (k) {
-               /* Drop reference added by kset_find_obj() */
-               kobject_put(k);
-               priv = to_driver(k);
-               return priv->driver;
-       }
-       return NULL;
-}
-EXPORT_SYMBOL_GPL(driver_find);