[15/21] driver core: bus: clean up driver_find()

Message ID 20230208111330.439504-16-gregkh@linuxfoundation.org
State New
Headers
Series driver core: bus: remove private "backpointer" from struct bus_type |

Commit Message

Greg KH Feb. 8, 2023, 11:13 a.m. UTC
  Convert the driver_find() function to use bus_to_subsys() and not use
the back-pointer to the private structure.

Cc: "Rafael J. Wysocki" <rafael@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/base/bus.c | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)
  

Patch

diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index 727de4c36d59..951d63c8e885 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -1302,16 +1302,23 @@  EXPORT_SYMBOL_GPL(subsys_virtual_register);
  */
 struct device_driver *driver_find(const char *name, struct bus_type *bus)
 {
-	struct kobject *k = kset_find_obj(bus->p->drivers_kset, name);
+	struct subsys_private *sp = bus_to_subsys(bus);
+	struct kobject *k;
 	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;
+	if (!sp)
+		return NULL;
+
+	k = kset_find_obj(sp->drivers_kset, name);
+	subsys_put(sp);
+	if (!k)
+		return NULL;
+
+	priv = to_driver(k);
+
+	/* Drop reference added by kset_find_obj() */
+	kobject_put(k);
+	return priv->driver;
 }
 EXPORT_SYMBOL_GPL(driver_find);