1  // SPDX-License-Identifier: GPL-2.0
2  /*
3   * bus.c - bus driver management
4   *
5   * Copyright (c) 2002-3 Patrick Mochel
6   * Copyright (c) 2002-3 Open Source Development Labs
7   * Copyright (c) 2007 Greg Kroah-Hartman <gregkh@suse.de>
8   * Copyright (c) 2007 Novell Inc.
9   * Copyright (c) 2023 Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10   */
11  
12  #include <linux/async.h>
13  #include <linux/device/bus.h>
14  #include <linux/device.h>
15  #include <linux/module.h>
16  #include <linux/errno.h>
17  #include <linux/slab.h>
18  #include <linux/init.h>
19  #include <linux/string.h>
20  #include <linux/mutex.h>
21  #include <linux/sysfs.h>
22  #include "base.h"
23  #include "power/power.h"
24  
25  /* /sys/devices/system */
26  static struct kset *system_kset;
27  
28  /* /sys/bus */
29  static struct kset *bus_kset;
30  
31  #define to_bus_attr(_attr) container_of(_attr, struct bus_attribute, attr)
32  
33  /*
34   * sysfs bindings for drivers
35   */
36  
37  #define to_drv_attr(_attr) container_of(_attr, struct driver_attribute, attr)
38  
39  #define DRIVER_ATTR_IGNORE_LOCKDEP(_name, _mode, _show, _store) \
40  	struct driver_attribute driver_attr_##_name =		\
41  		__ATTR_IGNORE_LOCKDEP(_name, _mode, _show, _store)
42  
43  static int __must_check bus_rescan_devices_helper(struct device *dev,
44  						void *data);
45  
46  /**
47   * bus_to_subsys - Turn a struct bus_type into a struct subsys_private
48   *
49   * @bus: pointer to the struct bus_type to look up
50   *
51   * The driver core internals needs to work on the subsys_private structure, not
52   * the external struct bus_type pointer.  This function walks the list of
53   * registered busses in the system and finds the matching one and returns the
54   * internal struct subsys_private that relates to that bus.
55   *
56   * Note, the reference count of the return value is INCREMENTED if it is not
57   * NULL.  A call to subsys_put() must be done when finished with the pointer in
58   * order for it to be properly freed.
59   */
bus_to_subsys(const struct bus_type * bus)60  static struct subsys_private *bus_to_subsys(const struct bus_type *bus)
61  {
62  	struct subsys_private *sp = NULL;
63  	struct kobject *kobj;
64  
65  	if (!bus || !bus_kset)
66  		return NULL;
67  
68  	spin_lock(&bus_kset->list_lock);
69  
70  	if (list_empty(&bus_kset->list))
71  		goto done;
72  
73  	list_for_each_entry(kobj, &bus_kset->list, entry) {
74  		struct kset *kset = container_of(kobj, struct kset, kobj);
75  
76  		sp = container_of_const(kset, struct subsys_private, subsys);
77  		if (sp->bus == bus)
78  			goto done;
79  	}
80  	sp = NULL;
81  done:
82  	sp = subsys_get(sp);
83  	spin_unlock(&bus_kset->list_lock);
84  	return sp;
85  }
86  
bus_get(const struct bus_type * bus)87  static const struct bus_type *bus_get(const struct bus_type *bus)
88  {
89  	struct subsys_private *sp = bus_to_subsys(bus);
90  
91  	if (sp)
92  		return bus;
93  	return NULL;
94  }
95  
bus_put(const struct bus_type * bus)96  static void bus_put(const struct bus_type *bus)
97  {
98  	struct subsys_private *sp = bus_to_subsys(bus);
99  
100  	/* two puts are required as the call to bus_to_subsys incremented it again */
101  	subsys_put(sp);
102  	subsys_put(sp);
103  }
104  
drv_attr_show(struct kobject * kobj,struct attribute * attr,char * buf)105  static ssize_t drv_attr_show(struct kobject *kobj, struct attribute *attr,
106  			     char *buf)
107  {
108  	struct driver_attribute *drv_attr = to_drv_attr(attr);
109  	struct driver_private *drv_priv = to_driver(kobj);
110  	ssize_t ret = -EIO;
111  
112  	if (drv_attr->show)
113  		ret = drv_attr->show(drv_priv->driver, buf);
114  	return ret;
115  }
116  
drv_attr_store(struct kobject * kobj,struct attribute * attr,const char * buf,size_t count)117  static ssize_t drv_attr_store(struct kobject *kobj, struct attribute *attr,
118  			      const char *buf, size_t count)
119  {
120  	struct driver_attribute *drv_attr = to_drv_attr(attr);
121  	struct driver_private *drv_priv = to_driver(kobj);
122  	ssize_t ret = -EIO;
123  
124  	if (drv_attr->store)
125  		ret = drv_attr->store(drv_priv->driver, buf, count);
126  	return ret;
127  }
128  
129  static const struct sysfs_ops driver_sysfs_ops = {
130  	.show	= drv_attr_show,
131  	.store	= drv_attr_store,
132  };
133  
driver_release(struct kobject * kobj)134  static void driver_release(struct kobject *kobj)
135  {
136  	struct driver_private *drv_priv = to_driver(kobj);
137  
138  	pr_debug("driver: '%s': %s\n", kobject_name(kobj), __func__);
139  	kfree(drv_priv);
140  }
141  
142  static const struct kobj_type driver_ktype = {
143  	.sysfs_ops	= &driver_sysfs_ops,
144  	.release	= driver_release,
145  };
146  
147  /*
148   * sysfs bindings for buses
149   */
bus_attr_show(struct kobject * kobj,struct attribute * attr,char * buf)150  static ssize_t bus_attr_show(struct kobject *kobj, struct attribute *attr,
151  			     char *buf)
152  {
153  	struct bus_attribute *bus_attr = to_bus_attr(attr);
154  	struct subsys_private *subsys_priv = to_subsys_private(kobj);
155  	/* return -EIO for reading a bus attribute without show() */
156  	ssize_t ret = -EIO;
157  
158  	if (bus_attr->show)
159  		ret = bus_attr->show(subsys_priv->bus, buf);
160  	return ret;
161  }
162  
bus_attr_store(struct kobject * kobj,struct attribute * attr,const char * buf,size_t count)163  static ssize_t bus_attr_store(struct kobject *kobj, struct attribute *attr,
164  			      const char *buf, size_t count)
165  {
166  	struct bus_attribute *bus_attr = to_bus_attr(attr);
167  	struct subsys_private *subsys_priv = to_subsys_private(kobj);
168  	/* return -EIO for writing a bus attribute without store() */
169  	ssize_t ret = -EIO;
170  
171  	if (bus_attr->store)
172  		ret = bus_attr->store(subsys_priv->bus, buf, count);
173  	return ret;
174  }
175  
176  static const struct sysfs_ops bus_sysfs_ops = {
177  	.show	= bus_attr_show,
178  	.store	= bus_attr_store,
179  };
180  
bus_create_file(const struct bus_type * bus,struct bus_attribute * attr)181  int bus_create_file(const struct bus_type *bus, struct bus_attribute *attr)
182  {
183  	struct subsys_private *sp = bus_to_subsys(bus);
184  	int error;
185  
186  	if (!sp)
187  		return -EINVAL;
188  
189  	error = sysfs_create_file(&sp->subsys.kobj, &attr->attr);
190  
191  	subsys_put(sp);
192  	return error;
193  }
194  EXPORT_SYMBOL_GPL(bus_create_file);
195  
bus_remove_file(const struct bus_type * bus,struct bus_attribute * attr)196  void bus_remove_file(const struct bus_type *bus, struct bus_attribute *attr)
197  {
198  	struct subsys_private *sp = bus_to_subsys(bus);
199  
200  	if (!sp)
201  		return;
202  
203  	sysfs_remove_file(&sp->subsys.kobj, &attr->attr);
204  	subsys_put(sp);
205  }
206  EXPORT_SYMBOL_GPL(bus_remove_file);
207  
bus_release(struct kobject * kobj)208  static void bus_release(struct kobject *kobj)
209  {
210  	struct subsys_private *priv = to_subsys_private(kobj);
211  
212  	lockdep_unregister_key(&priv->lock_key);
213  	kfree(priv);
214  }
215  
216  static const struct kobj_type bus_ktype = {
217  	.sysfs_ops	= &bus_sysfs_ops,
218  	.release	= bus_release,
219  };
220  
bus_uevent_filter(const struct kobject * kobj)221  static int bus_uevent_filter(const struct kobject *kobj)
222  {
223  	const struct kobj_type *ktype = get_ktype(kobj);
224  
225  	if (ktype == &bus_ktype)
226  		return 1;
227  	return 0;
228  }
229  
230  static const struct kset_uevent_ops bus_uevent_ops = {
231  	.filter = bus_uevent_filter,
232  };
233  
234  /* Manually detach a device from its associated driver. */
unbind_store(struct device_driver * drv,const char * buf,size_t count)235  static ssize_t unbind_store(struct device_driver *drv, const char *buf,
236  			    size_t count)
237  {
238  	const struct bus_type *bus = bus_get(drv->bus);
239  	struct device *dev;
240  	int err = -ENODEV;
241  
242  	dev = bus_find_device_by_name(bus, NULL, buf);
243  	if (dev && dev->driver == drv) {
244  		device_driver_detach(dev);
245  		err = count;
246  	}
247  	put_device(dev);
248  	bus_put(bus);
249  	return err;
250  }
251  static DRIVER_ATTR_IGNORE_LOCKDEP(unbind, 0200, NULL, unbind_store);
252  
253  /*
254   * Manually attach a device to a driver.
255   * Note: the driver must want to bind to the device,
256   * it is not possible to override the driver's id table.
257   */
bind_store(struct device_driver * drv,const char * buf,size_t count)258  static ssize_t bind_store(struct device_driver *drv, const char *buf,
259  			  size_t count)
260  {
261  	const struct bus_type *bus = bus_get(drv->bus);
262  	struct device *dev;
263  	int err = -ENODEV;
264  
265  	dev = bus_find_device_by_name(bus, NULL, buf);
266  	if (dev && driver_match_device(drv, dev)) {
267  		err = device_driver_attach(drv, dev);
268  		if (!err) {
269  			/* success */
270  			err = count;
271  		}
272  	}
273  	put_device(dev);
274  	bus_put(bus);
275  	return err;
276  }
277  static DRIVER_ATTR_IGNORE_LOCKDEP(bind, 0200, NULL, bind_store);
278  
drivers_autoprobe_show(const struct bus_type * bus,char * buf)279  static ssize_t drivers_autoprobe_show(const struct bus_type *bus, char *buf)
280  {
281  	struct subsys_private *sp = bus_to_subsys(bus);
282  	int ret;
283  
284  	if (!sp)
285  		return -EINVAL;
286  
287  	ret = sysfs_emit(buf, "%d\n", sp->drivers_autoprobe);
288  	subsys_put(sp);
289  	return ret;
290  }
291  
drivers_autoprobe_store(const struct bus_type * bus,const char * buf,size_t count)292  static ssize_t drivers_autoprobe_store(const struct bus_type *bus,
293  				       const char *buf, size_t count)
294  {
295  	struct subsys_private *sp = bus_to_subsys(bus);
296  
297  	if (!sp)
298  		return -EINVAL;
299  
300  	if (buf[0] == '0')
301  		sp->drivers_autoprobe = 0;
302  	else
303  		sp->drivers_autoprobe = 1;
304  
305  	subsys_put(sp);
306  	return count;
307  }
308  
drivers_probe_store(const struct bus_type * bus,const char * buf,size_t count)309  static ssize_t drivers_probe_store(const struct bus_type *bus,
310  				   const char *buf, size_t count)
311  {
312  	struct device *dev;
313  	int err = -EINVAL;
314  
315  	dev = bus_find_device_by_name(bus, NULL, buf);
316  	if (!dev)
317  		return -ENODEV;
318  	if (bus_rescan_devices_helper(dev, NULL) == 0)
319  		err = count;
320  	put_device(dev);
321  	return err;
322  }
323  
next_device(struct klist_iter * i)324  static struct device *next_device(struct klist_iter *i)
325  {
326  	struct klist_node *n = klist_next(i);
327  	struct device *dev = NULL;
328  	struct device_private *dev_prv;
329  
330  	if (n) {
331  		dev_prv = to_device_private_bus(n);
332  		dev = dev_prv->device;
333  	}
334  	return dev;
335  }
336  
337  /**
338   * bus_for_each_dev - device iterator.
339   * @bus: bus type.
340   * @start: device to start iterating from.
341   * @data: data for the callback.
342   * @fn: function to be called for each device.
343   *
344   * Iterate over @bus's list of devices, and call @fn for each,
345   * passing it @data. If @start is not NULL, we use that device to
346   * begin iterating from.
347   *
348   * We check the return of @fn each time. If it returns anything
349   * other than 0, we break out and return that value.
350   *
351   * NOTE: The device that returns a non-zero value is not retained
352   * in any way, nor is its refcount incremented. If the caller needs
353   * to retain this data, it should do so, and increment the reference
354   * count in the supplied callback.
355   */
bus_for_each_dev(const struct bus_type * bus,struct device * start,void * data,int (* fn)(struct device *,void *))356  int bus_for_each_dev(const struct bus_type *bus, struct device *start,
357  		     void *data, int (*fn)(struct device *, void *))
358  {
359  	struct subsys_private *sp = bus_to_subsys(bus);
360  	struct klist_iter i;
361  	struct device *dev;
362  	int error = 0;
363  
364  	if (!sp)
365  		return -EINVAL;
366  
367  	klist_iter_init_node(&sp->klist_devices, &i,
368  			     (start ? &start->p->knode_bus : NULL));
369  	while (!error && (dev = next_device(&i)))
370  		error = fn(dev, data);
371  	klist_iter_exit(&i);
372  	subsys_put(sp);
373  	return error;
374  }
375  EXPORT_SYMBOL_GPL(bus_for_each_dev);
376  
377  /**
378   * bus_find_device - device iterator for locating a particular device.
379   * @bus: bus type
380   * @start: Device to begin with
381   * @data: Data to pass to match function
382   * @match: Callback function to check device
383   *
384   * This is similar to the bus_for_each_dev() function above, but it
385   * returns a reference to a device that is 'found' for later use, as
386   * determined by the @match callback.
387   *
388   * The callback should return 0 if the device doesn't match and non-zero
389   * if it does.  If the callback returns non-zero, this function will
390   * return to the caller and not iterate over any more devices.
391   */
bus_find_device(const struct bus_type * bus,struct device * start,const void * data,device_match_t match)392  struct device *bus_find_device(const struct bus_type *bus,
393  			       struct device *start, const void *data,
394  			       device_match_t match)
395  {
396  	struct subsys_private *sp = bus_to_subsys(bus);
397  	struct klist_iter i;
398  	struct device *dev;
399  
400  	if (!sp)
401  		return NULL;
402  
403  	klist_iter_init_node(&sp->klist_devices, &i,
404  			     (start ? &start->p->knode_bus : NULL));
405  	while ((dev = next_device(&i)))
406  		if (match(dev, data) && get_device(dev))
407  			break;
408  	klist_iter_exit(&i);
409  	subsys_put(sp);
410  	return dev;
411  }
412  EXPORT_SYMBOL_GPL(bus_find_device);
413  
next_driver(struct klist_iter * i)414  static struct device_driver *next_driver(struct klist_iter *i)
415  {
416  	struct klist_node *n = klist_next(i);
417  	struct driver_private *drv_priv;
418  
419  	if (n) {
420  		drv_priv = container_of(n, struct driver_private, knode_bus);
421  		return drv_priv->driver;
422  	}
423  	return NULL;
424  }
425  
426  /**
427   * bus_for_each_drv - driver iterator
428   * @bus: bus we're dealing with.
429   * @start: driver to start iterating on.
430   * @data: data to pass to the callback.
431   * @fn: function to call for each driver.
432   *
433   * This is nearly identical to the device iterator above.
434   * We iterate over each driver that belongs to @bus, and call
435   * @fn for each. If @fn returns anything but 0, we break out
436   * and return it. If @start is not NULL, we use it as the head
437   * of the list.
438   *
439   * NOTE: we don't return the driver that returns a non-zero
440   * value, nor do we leave the reference count incremented for that
441   * driver. If the caller needs to know that info, it must set it
442   * in the callback. It must also be sure to increment the refcount
443   * so it doesn't disappear before returning to the caller.
444   */
bus_for_each_drv(const struct bus_type * bus,struct device_driver * start,void * data,int (* fn)(struct device_driver *,void *))445  int bus_for_each_drv(const struct bus_type *bus, struct device_driver *start,
446  		     void *data, int (*fn)(struct device_driver *, void *))
447  {
448  	struct subsys_private *sp = bus_to_subsys(bus);
449  	struct klist_iter i;
450  	struct device_driver *drv;
451  	int error = 0;
452  
453  	if (!sp)
454  		return -EINVAL;
455  
456  	klist_iter_init_node(&sp->klist_drivers, &i,
457  			     start ? &start->p->knode_bus : NULL);
458  	while ((drv = next_driver(&i)) && !error)
459  		error = fn(drv, data);
460  	klist_iter_exit(&i);
461  	subsys_put(sp);
462  	return error;
463  }
464  EXPORT_SYMBOL_GPL(bus_for_each_drv);
465  
466  /**
467   * bus_add_device - add device to bus
468   * @dev: device being added
469   *
470   * - Add device's bus attributes.
471   * - Create links to device's bus.
472   * - Add the device to its bus's list of devices.
473   */
bus_add_device(struct device * dev)474  int bus_add_device(struct device *dev)
475  {
476  	struct subsys_private *sp = bus_to_subsys(dev->bus);
477  	int error;
478  
479  	if (!sp) {
480  		/*
481  		 * This is a normal operation for many devices that do not
482  		 * have a bus assigned to them, just say that all went
483  		 * well.
484  		 */
485  		return 0;
486  	}
487  
488  	/*
489  	 * Reference in sp is now incremented and will be dropped when
490  	 * the device is removed from the bus
491  	 */
492  
493  	pr_debug("bus: '%s': add device %s\n", sp->bus->name, dev_name(dev));
494  
495  	error = device_add_groups(dev, sp->bus->dev_groups);
496  	if (error)
497  		goto out_put;
498  
499  	error = sysfs_create_link(&sp->devices_kset->kobj, &dev->kobj, dev_name(dev));
500  	if (error)
501  		goto out_groups;
502  
503  	error = sysfs_create_link(&dev->kobj, &sp->subsys.kobj, "subsystem");
504  	if (error)
505  		goto out_subsys;
506  
507  	klist_add_tail(&dev->p->knode_bus, &sp->klist_devices);
508  	return 0;
509  
510  out_subsys:
511  	sysfs_remove_link(&sp->devices_kset->kobj, dev_name(dev));
512  out_groups:
513  	device_remove_groups(dev, sp->bus->dev_groups);
514  out_put:
515  	subsys_put(sp);
516  	return error;
517  }
518  
519  /**
520   * bus_probe_device - probe drivers for a new device
521   * @dev: device to probe
522   *
523   * - Automatically probe for a driver if the bus allows it.
524   */
bus_probe_device(struct device * dev)525  void bus_probe_device(struct device *dev)
526  {
527  	struct subsys_private *sp = bus_to_subsys(dev->bus);
528  	struct subsys_interface *sif;
529  
530  	if (!sp)
531  		return;
532  
533  	if (sp->drivers_autoprobe)
534  		device_initial_probe(dev);
535  
536  	mutex_lock(&sp->mutex);
537  	list_for_each_entry(sif, &sp->interfaces, node)
538  		if (sif->add_dev)
539  			sif->add_dev(dev, sif);
540  	mutex_unlock(&sp->mutex);
541  	subsys_put(sp);
542  }
543  
544  /**
545   * bus_remove_device - remove device from bus
546   * @dev: device to be removed
547   *
548   * - Remove device from all interfaces.
549   * - Remove symlink from bus' directory.
550   * - Delete device from bus's list.
551   * - Detach from its driver.
552   * - Drop reference taken in bus_add_device().
553   */
bus_remove_device(struct device * dev)554  void bus_remove_device(struct device *dev)
555  {
556  	struct subsys_private *sp = bus_to_subsys(dev->bus);
557  	struct subsys_interface *sif;
558  
559  	if (!sp)
560  		return;
561  
562  	mutex_lock(&sp->mutex);
563  	list_for_each_entry(sif, &sp->interfaces, node)
564  		if (sif->remove_dev)
565  			sif->remove_dev(dev, sif);
566  	mutex_unlock(&sp->mutex);
567  
568  	sysfs_remove_link(&dev->kobj, "subsystem");
569  	sysfs_remove_link(&sp->devices_kset->kobj, dev_name(dev));
570  	device_remove_groups(dev, dev->bus->dev_groups);
571  	if (klist_node_attached(&dev->p->knode_bus))
572  		klist_del(&dev->p->knode_bus);
573  
574  	pr_debug("bus: '%s': remove device %s\n",
575  		 dev->bus->name, dev_name(dev));
576  	device_release_driver(dev);
577  
578  	/*
579  	 * Decrement the reference count twice, once for the bus_to_subsys()
580  	 * call in the start of this function, and the second one from the
581  	 * reference increment in bus_add_device()
582  	 */
583  	subsys_put(sp);
584  	subsys_put(sp);
585  }
586  
add_bind_files(struct device_driver * drv)587  static int __must_check add_bind_files(struct device_driver *drv)
588  {
589  	int ret;
590  
591  	ret = driver_create_file(drv, &driver_attr_unbind);
592  	if (ret == 0) {
593  		ret = driver_create_file(drv, &driver_attr_bind);
594  		if (ret)
595  			driver_remove_file(drv, &driver_attr_unbind);
596  	}
597  	return ret;
598  }
599  
remove_bind_files(struct device_driver * drv)600  static void remove_bind_files(struct device_driver *drv)
601  {
602  	driver_remove_file(drv, &driver_attr_bind);
603  	driver_remove_file(drv, &driver_attr_unbind);
604  }
605  
606  static BUS_ATTR_WO(drivers_probe);
607  static BUS_ATTR_RW(drivers_autoprobe);
608  
add_probe_files(const struct bus_type * bus)609  static int add_probe_files(const struct bus_type *bus)
610  {
611  	int retval;
612  
613  	retval = bus_create_file(bus, &bus_attr_drivers_probe);
614  	if (retval)
615  		goto out;
616  
617  	retval = bus_create_file(bus, &bus_attr_drivers_autoprobe);
618  	if (retval)
619  		bus_remove_file(bus, &bus_attr_drivers_probe);
620  out:
621  	return retval;
622  }
623  
remove_probe_files(const struct bus_type * bus)624  static void remove_probe_files(const struct bus_type *bus)
625  {
626  	bus_remove_file(bus, &bus_attr_drivers_autoprobe);
627  	bus_remove_file(bus, &bus_attr_drivers_probe);
628  }
629  
uevent_store(struct device_driver * drv,const char * buf,size_t count)630  static ssize_t uevent_store(struct device_driver *drv, const char *buf,
631  			    size_t count)
632  {
633  	int rc;
634  
635  	rc = kobject_synth_uevent(&drv->p->kobj, buf, count);
636  	return rc ? rc : count;
637  }
638  static DRIVER_ATTR_WO(uevent);
639  
640  /**
641   * bus_add_driver - Add a driver to the bus.
642   * @drv: driver.
643   */
bus_add_driver(struct device_driver * drv)644  int bus_add_driver(struct device_driver *drv)
645  {
646  	struct subsys_private *sp = bus_to_subsys(drv->bus);
647  	struct driver_private *priv;
648  	int error = 0;
649  
650  	if (!sp)
651  		return -EINVAL;
652  
653  	/*
654  	 * Reference in sp is now incremented and will be dropped when
655  	 * the driver is removed from the bus
656  	 */
657  	pr_debug("bus: '%s': add driver %s\n", sp->bus->name, drv->name);
658  
659  	priv = kzalloc(sizeof(*priv), GFP_KERNEL);
660  	if (!priv) {
661  		error = -ENOMEM;
662  		goto out_put_bus;
663  	}
664  	klist_init(&priv->klist_devices, NULL, NULL);
665  	priv->driver = drv;
666  	drv->p = priv;
667  	priv->kobj.kset = sp->drivers_kset;
668  	error = kobject_init_and_add(&priv->kobj, &driver_ktype, NULL,
669  				     "%s", drv->name);
670  	if (error)
671  		goto out_unregister;
672  
673  	klist_add_tail(&priv->knode_bus, &sp->klist_drivers);
674  	if (sp->drivers_autoprobe) {
675  		error = driver_attach(drv);
676  		if (error)
677  			goto out_del_list;
678  	}
679  	error = module_add_driver(drv->owner, drv);
680  	if (error) {
681  		printk(KERN_ERR "%s: failed to create module links for %s\n",
682  			__func__, drv->name);
683  		goto out_detach;
684  	}
685  
686  	error = driver_create_file(drv, &driver_attr_uevent);
687  	if (error) {
688  		printk(KERN_ERR "%s: uevent attr (%s) failed\n",
689  			__func__, drv->name);
690  	}
691  	error = driver_add_groups(drv, sp->bus->drv_groups);
692  	if (error) {
693  		/* How the hell do we get out of this pickle? Give up */
694  		printk(KERN_ERR "%s: driver_add_groups(%s) failed\n",
695  			__func__, drv->name);
696  	}
697  
698  	if (!drv->suppress_bind_attrs) {
699  		error = add_bind_files(drv);
700  		if (error) {
701  			/* Ditto */
702  			printk(KERN_ERR "%s: add_bind_files(%s) failed\n",
703  				__func__, drv->name);
704  		}
705  	}
706  
707  	return 0;
708  
709  out_detach:
710  	driver_detach(drv);
711  out_del_list:
712  	klist_del(&priv->knode_bus);
713  out_unregister:
714  	kobject_put(&priv->kobj);
715  	/* drv->p is freed in driver_release()  */
716  	drv->p = NULL;
717  out_put_bus:
718  	subsys_put(sp);
719  	return error;
720  }
721  
722  /**
723   * bus_remove_driver - delete driver from bus's knowledge.
724   * @drv: driver.
725   *
726   * Detach the driver from the devices it controls, and remove
727   * it from its bus's list of drivers. Finally, we drop the reference
728   * to the bus we took in bus_add_driver().
729   */
bus_remove_driver(struct device_driver * drv)730  void bus_remove_driver(struct device_driver *drv)
731  {
732  	struct subsys_private *sp = bus_to_subsys(drv->bus);
733  
734  	if (!sp)
735  		return;
736  
737  	pr_debug("bus: '%s': remove driver %s\n", sp->bus->name, drv->name);
738  
739  	if (!drv->suppress_bind_attrs)
740  		remove_bind_files(drv);
741  	driver_remove_groups(drv, sp->bus->drv_groups);
742  	driver_remove_file(drv, &driver_attr_uevent);
743  	klist_remove(&drv->p->knode_bus);
744  	driver_detach(drv);
745  	module_remove_driver(drv);
746  	kobject_put(&drv->p->kobj);
747  
748  	/*
749  	 * Decrement the reference count twice, once for the bus_to_subsys()
750  	 * call in the start of this function, and the second one from the
751  	 * reference increment in bus_add_driver()
752  	 */
753  	subsys_put(sp);
754  	subsys_put(sp);
755  }
756  
757  /* Helper for bus_rescan_devices's iter */
bus_rescan_devices_helper(struct device * dev,void * data)758  static int __must_check bus_rescan_devices_helper(struct device *dev,
759  						  void *data)
760  {
761  	int ret = 0;
762  
763  	if (!dev->driver) {
764  		if (dev->parent && dev->bus->need_parent_lock)
765  			device_lock(dev->parent);
766  		ret = device_attach(dev);
767  		if (dev->parent && dev->bus->need_parent_lock)
768  			device_unlock(dev->parent);
769  	}
770  	return ret < 0 ? ret : 0;
771  }
772  
773  /**
774   * bus_rescan_devices - rescan devices on the bus for possible drivers
775   * @bus: the bus to scan.
776   *
777   * This function will look for devices on the bus with no driver
778   * attached and rescan it against existing drivers to see if it matches
779   * any by calling device_attach() for the unbound devices.
780   */
bus_rescan_devices(const struct bus_type * bus)781  int bus_rescan_devices(const struct bus_type *bus)
782  {
783  	return bus_for_each_dev(bus, NULL, NULL, bus_rescan_devices_helper);
784  }
785  EXPORT_SYMBOL_GPL(bus_rescan_devices);
786  
787  /**
788   * device_reprobe - remove driver for a device and probe for a new driver
789   * @dev: the device to reprobe
790   *
791   * This function detaches the attached driver (if any) for the given
792   * device and restarts the driver probing process.  It is intended
793   * to use if probing criteria changed during a devices lifetime and
794   * driver attachment should change accordingly.
795   */
device_reprobe(struct device * dev)796  int device_reprobe(struct device *dev)
797  {
798  	if (dev->driver)
799  		device_driver_detach(dev);
800  	return bus_rescan_devices_helper(dev, NULL);
801  }
802  EXPORT_SYMBOL_GPL(device_reprobe);
803  
klist_devices_get(struct klist_node * n)804  static void klist_devices_get(struct klist_node *n)
805  {
806  	struct device_private *dev_prv = to_device_private_bus(n);
807  	struct device *dev = dev_prv->device;
808  
809  	get_device(dev);
810  }
811  
klist_devices_put(struct klist_node * n)812  static void klist_devices_put(struct klist_node *n)
813  {
814  	struct device_private *dev_prv = to_device_private_bus(n);
815  	struct device *dev = dev_prv->device;
816  
817  	put_device(dev);
818  }
819  
bus_uevent_store(const struct bus_type * bus,const char * buf,size_t count)820  static ssize_t bus_uevent_store(const struct bus_type *bus,
821  				const char *buf, size_t count)
822  {
823  	struct subsys_private *sp = bus_to_subsys(bus);
824  	int ret;
825  
826  	if (!sp)
827  		return -EINVAL;
828  
829  	ret = kobject_synth_uevent(&sp->subsys.kobj, buf, count);
830  	subsys_put(sp);
831  
832  	if (ret)
833  		return ret;
834  	return count;
835  }
836  /*
837   * "open code" the old BUS_ATTR() macro here.  We want to use BUS_ATTR_WO()
838   * here, but can not use it as earlier in the file we have
839   * DEVICE_ATTR_WO(uevent), which would cause a clash with the with the store
840   * function name.
841   */
842  static struct bus_attribute bus_attr_uevent = __ATTR(uevent, 0200, NULL,
843  						     bus_uevent_store);
844  
845  /**
846   * bus_register - register a driver-core subsystem
847   * @bus: bus to register
848   *
849   * Once we have that, we register the bus with the kobject
850   * infrastructure, then register the children subsystems it has:
851   * the devices and drivers that belong to the subsystem.
852   */
bus_register(const struct bus_type * bus)853  int bus_register(const struct bus_type *bus)
854  {
855  	int retval;
856  	struct subsys_private *priv;
857  	struct kobject *bus_kobj;
858  	struct lock_class_key *key;
859  
860  	priv = kzalloc(sizeof(struct subsys_private), GFP_KERNEL);
861  	if (!priv)
862  		return -ENOMEM;
863  
864  	priv->bus = bus;
865  
866  	BLOCKING_INIT_NOTIFIER_HEAD(&priv->bus_notifier);
867  
868  	bus_kobj = &priv->subsys.kobj;
869  	retval = kobject_set_name(bus_kobj, "%s", bus->name);
870  	if (retval)
871  		goto out;
872  
873  	bus_kobj->kset = bus_kset;
874  	bus_kobj->ktype = &bus_ktype;
875  	priv->drivers_autoprobe = 1;
876  
877  	retval = kset_register(&priv->subsys);
878  	if (retval)
879  		goto out;
880  
881  	retval = bus_create_file(bus, &bus_attr_uevent);
882  	if (retval)
883  		goto bus_uevent_fail;
884  
885  	priv->devices_kset = kset_create_and_add("devices", NULL, bus_kobj);
886  	if (!priv->devices_kset) {
887  		retval = -ENOMEM;
888  		goto bus_devices_fail;
889  	}
890  
891  	priv->drivers_kset = kset_create_and_add("drivers", NULL, bus_kobj);
892  	if (!priv->drivers_kset) {
893  		retval = -ENOMEM;
894  		goto bus_drivers_fail;
895  	}
896  
897  	INIT_LIST_HEAD(&priv->interfaces);
898  	key = &priv->lock_key;
899  	lockdep_register_key(key);
900  	__mutex_init(&priv->mutex, "subsys mutex", key);
901  	klist_init(&priv->klist_devices, klist_devices_get, klist_devices_put);
902  	klist_init(&priv->klist_drivers, NULL, NULL);
903  
904  	retval = add_probe_files(bus);
905  	if (retval)
906  		goto bus_probe_files_fail;
907  
908  	retval = sysfs_create_groups(bus_kobj, bus->bus_groups);
909  	if (retval)
910  		goto bus_groups_fail;
911  
912  	pr_debug("bus: '%s': registered\n", bus->name);
913  	return 0;
914  
915  bus_groups_fail:
916  	remove_probe_files(bus);
917  bus_probe_files_fail:
918  	kset_unregister(priv->drivers_kset);
919  bus_drivers_fail:
920  	kset_unregister(priv->devices_kset);
921  bus_devices_fail:
922  	bus_remove_file(bus, &bus_attr_uevent);
923  bus_uevent_fail:
924  	kset_unregister(&priv->subsys);
925  	/* Above kset_unregister() will kfree @priv */
926  	priv = NULL;
927  out:
928  	kfree(priv);
929  	return retval;
930  }
931  EXPORT_SYMBOL_GPL(bus_register);
932  
933  /**
934   * bus_unregister - remove a bus from the system
935   * @bus: bus.
936   *
937   * Unregister the child subsystems and the bus itself.
938   * Finally, we call bus_put() to release the refcount
939   */
bus_unregister(const struct bus_type * bus)940  void bus_unregister(const struct bus_type *bus)
941  {
942  	struct subsys_private *sp = bus_to_subsys(bus);
943  	struct kobject *bus_kobj;
944  
945  	if (!sp)
946  		return;
947  
948  	pr_debug("bus: '%s': unregistering\n", bus->name);
949  	if (sp->dev_root)
950  		device_unregister(sp->dev_root);
951  
952  	bus_kobj = &sp->subsys.kobj;
953  	sysfs_remove_groups(bus_kobj, bus->bus_groups);
954  	remove_probe_files(bus);
955  	bus_remove_file(bus, &bus_attr_uevent);
956  
957  	kset_unregister(sp->drivers_kset);
958  	kset_unregister(sp->devices_kset);
959  	kset_unregister(&sp->subsys);
960  	subsys_put(sp);
961  }
962  EXPORT_SYMBOL_GPL(bus_unregister);
963  
bus_register_notifier(const struct bus_type * bus,struct notifier_block * nb)964  int bus_register_notifier(const struct bus_type *bus, struct notifier_block *nb)
965  {
966  	struct subsys_private *sp = bus_to_subsys(bus);
967  	int retval;
968  
969  	if (!sp)
970  		return -EINVAL;
971  
972  	retval = blocking_notifier_chain_register(&sp->bus_notifier, nb);
973  	subsys_put(sp);
974  	return retval;
975  }
976  EXPORT_SYMBOL_GPL(bus_register_notifier);
977  
bus_unregister_notifier(const struct bus_type * bus,struct notifier_block * nb)978  int bus_unregister_notifier(const struct bus_type *bus, struct notifier_block *nb)
979  {
980  	struct subsys_private *sp = bus_to_subsys(bus);
981  	int retval;
982  
983  	if (!sp)
984  		return -EINVAL;
985  	retval = blocking_notifier_chain_unregister(&sp->bus_notifier, nb);
986  	subsys_put(sp);
987  	return retval;
988  }
989  EXPORT_SYMBOL_GPL(bus_unregister_notifier);
990  
bus_notify(struct device * dev,enum bus_notifier_event value)991  void bus_notify(struct device *dev, enum bus_notifier_event value)
992  {
993  	struct subsys_private *sp = bus_to_subsys(dev->bus);
994  
995  	if (!sp)
996  		return;
997  
998  	blocking_notifier_call_chain(&sp->bus_notifier, value, dev);
999  	subsys_put(sp);
1000  }
1001  
bus_get_kset(const struct bus_type * bus)1002  struct kset *bus_get_kset(const struct bus_type *bus)
1003  {
1004  	struct subsys_private *sp = bus_to_subsys(bus);
1005  	struct kset *kset;
1006  
1007  	if (!sp)
1008  		return NULL;
1009  
1010  	kset = &sp->subsys;
1011  	subsys_put(sp);
1012  
1013  	return kset;
1014  }
1015  EXPORT_SYMBOL_GPL(bus_get_kset);
1016  
1017  /*
1018   * Yes, this forcibly breaks the klist abstraction temporarily.  It
1019   * just wants to sort the klist, not change reference counts and
1020   * take/drop locks rapidly in the process.  It does all this while
1021   * holding the lock for the list, so objects can't otherwise be
1022   * added/removed while we're swizzling.
1023   */
device_insertion_sort_klist(struct device * a,struct list_head * list,int (* compare)(const struct device * a,const struct device * b))1024  static void device_insertion_sort_klist(struct device *a, struct list_head *list,
1025  					int (*compare)(const struct device *a,
1026  							const struct device *b))
1027  {
1028  	struct klist_node *n;
1029  	struct device_private *dev_prv;
1030  	struct device *b;
1031  
1032  	list_for_each_entry(n, list, n_node) {
1033  		dev_prv = to_device_private_bus(n);
1034  		b = dev_prv->device;
1035  		if (compare(a, b) <= 0) {
1036  			list_move_tail(&a->p->knode_bus.n_node,
1037  				       &b->p->knode_bus.n_node);
1038  			return;
1039  		}
1040  	}
1041  	list_move_tail(&a->p->knode_bus.n_node, list);
1042  }
1043  
bus_sort_breadthfirst(const struct bus_type * bus,int (* compare)(const struct device * a,const struct device * b))1044  void bus_sort_breadthfirst(const struct bus_type *bus,
1045  			   int (*compare)(const struct device *a,
1046  					  const struct device *b))
1047  {
1048  	struct subsys_private *sp = bus_to_subsys(bus);
1049  	LIST_HEAD(sorted_devices);
1050  	struct klist_node *n, *tmp;
1051  	struct device_private *dev_prv;
1052  	struct device *dev;
1053  	struct klist *device_klist;
1054  
1055  	if (!sp)
1056  		return;
1057  	device_klist = &sp->klist_devices;
1058  
1059  	spin_lock(&device_klist->k_lock);
1060  	list_for_each_entry_safe(n, tmp, &device_klist->k_list, n_node) {
1061  		dev_prv = to_device_private_bus(n);
1062  		dev = dev_prv->device;
1063  		device_insertion_sort_klist(dev, &sorted_devices, compare);
1064  	}
1065  	list_splice(&sorted_devices, &device_klist->k_list);
1066  	spin_unlock(&device_klist->k_lock);
1067  	subsys_put(sp);
1068  }
1069  EXPORT_SYMBOL_GPL(bus_sort_breadthfirst);
1070  
1071  struct subsys_dev_iter {
1072  	struct klist_iter		ki;
1073  	const struct device_type	*type;
1074  };
1075  
1076  /**
1077   * subsys_dev_iter_init - initialize subsys device iterator
1078   * @iter: subsys iterator to initialize
1079   * @sp: the subsys private (i.e. bus) we wanna iterate over
1080   * @start: the device to start iterating from, if any
1081   * @type: device_type of the devices to iterate over, NULL for all
1082   *
1083   * Initialize subsys iterator @iter such that it iterates over devices
1084   * of @subsys.  If @start is set, the list iteration will start there,
1085   * otherwise if it is NULL, the iteration starts at the beginning of
1086   * the list.
1087   */
subsys_dev_iter_init(struct subsys_dev_iter * iter,struct subsys_private * sp,struct device * start,const struct device_type * type)1088  static void subsys_dev_iter_init(struct subsys_dev_iter *iter, struct subsys_private *sp,
1089  				 struct device *start, const struct device_type *type)
1090  {
1091  	struct klist_node *start_knode = NULL;
1092  
1093  	if (start)
1094  		start_knode = &start->p->knode_bus;
1095  	klist_iter_init_node(&sp->klist_devices, &iter->ki, start_knode);
1096  	iter->type = type;
1097  }
1098  
1099  /**
1100   * subsys_dev_iter_next - iterate to the next device
1101   * @iter: subsys iterator to proceed
1102   *
1103   * Proceed @iter to the next device and return it.  Returns NULL if
1104   * iteration is complete.
1105   *
1106   * The returned device is referenced and won't be released till
1107   * iterator is proceed to the next device or exited.  The caller is
1108   * free to do whatever it wants to do with the device including
1109   * calling back into subsys code.
1110   */
subsys_dev_iter_next(struct subsys_dev_iter * iter)1111  static struct device *subsys_dev_iter_next(struct subsys_dev_iter *iter)
1112  {
1113  	struct klist_node *knode;
1114  	struct device *dev;
1115  
1116  	for (;;) {
1117  		knode = klist_next(&iter->ki);
1118  		if (!knode)
1119  			return NULL;
1120  		dev = to_device_private_bus(knode)->device;
1121  		if (!iter->type || iter->type == dev->type)
1122  			return dev;
1123  	}
1124  }
1125  
1126  /**
1127   * subsys_dev_iter_exit - finish iteration
1128   * @iter: subsys iterator to finish
1129   *
1130   * Finish an iteration.  Always call this function after iteration is
1131   * complete whether the iteration ran till the end or not.
1132   */
subsys_dev_iter_exit(struct subsys_dev_iter * iter)1133  static void subsys_dev_iter_exit(struct subsys_dev_iter *iter)
1134  {
1135  	klist_iter_exit(&iter->ki);
1136  }
1137  
subsys_interface_register(struct subsys_interface * sif)1138  int subsys_interface_register(struct subsys_interface *sif)
1139  {
1140  	struct subsys_private *sp;
1141  	struct subsys_dev_iter iter;
1142  	struct device *dev;
1143  
1144  	if (!sif || !sif->subsys)
1145  		return -ENODEV;
1146  
1147  	sp = bus_to_subsys(sif->subsys);
1148  	if (!sp)
1149  		return -EINVAL;
1150  
1151  	/*
1152  	 * Reference in sp is now incremented and will be dropped when
1153  	 * the interface is removed from the bus
1154  	 */
1155  
1156  	mutex_lock(&sp->mutex);
1157  	list_add_tail(&sif->node, &sp->interfaces);
1158  	if (sif->add_dev) {
1159  		subsys_dev_iter_init(&iter, sp, NULL, NULL);
1160  		while ((dev = subsys_dev_iter_next(&iter)))
1161  			sif->add_dev(dev, sif);
1162  		subsys_dev_iter_exit(&iter);
1163  	}
1164  	mutex_unlock(&sp->mutex);
1165  
1166  	return 0;
1167  }
1168  EXPORT_SYMBOL_GPL(subsys_interface_register);
1169  
subsys_interface_unregister(struct subsys_interface * sif)1170  void subsys_interface_unregister(struct subsys_interface *sif)
1171  {
1172  	struct subsys_private *sp;
1173  	struct subsys_dev_iter iter;
1174  	struct device *dev;
1175  
1176  	if (!sif || !sif->subsys)
1177  		return;
1178  
1179  	sp = bus_to_subsys(sif->subsys);
1180  	if (!sp)
1181  		return;
1182  
1183  	mutex_lock(&sp->mutex);
1184  	list_del_init(&sif->node);
1185  	if (sif->remove_dev) {
1186  		subsys_dev_iter_init(&iter, sp, NULL, NULL);
1187  		while ((dev = subsys_dev_iter_next(&iter)))
1188  			sif->remove_dev(dev, sif);
1189  		subsys_dev_iter_exit(&iter);
1190  	}
1191  	mutex_unlock(&sp->mutex);
1192  
1193  	/*
1194  	 * Decrement the reference count twice, once for the bus_to_subsys()
1195  	 * call in the start of this function, and the second one from the
1196  	 * reference increment in subsys_interface_register()
1197  	 */
1198  	subsys_put(sp);
1199  	subsys_put(sp);
1200  }
1201  EXPORT_SYMBOL_GPL(subsys_interface_unregister);
1202  
system_root_device_release(struct device * dev)1203  static void system_root_device_release(struct device *dev)
1204  {
1205  	kfree(dev);
1206  }
1207  
subsys_register(const struct bus_type * subsys,const struct attribute_group ** groups,struct kobject * parent_of_root)1208  static int subsys_register(const struct bus_type *subsys,
1209  			   const struct attribute_group **groups,
1210  			   struct kobject *parent_of_root)
1211  {
1212  	struct subsys_private *sp;
1213  	struct device *dev;
1214  	int err;
1215  
1216  	err = bus_register(subsys);
1217  	if (err < 0)
1218  		return err;
1219  
1220  	sp = bus_to_subsys(subsys);
1221  	if (!sp) {
1222  		err = -EINVAL;
1223  		goto err_sp;
1224  	}
1225  
1226  	dev = kzalloc(sizeof(struct device), GFP_KERNEL);
1227  	if (!dev) {
1228  		err = -ENOMEM;
1229  		goto err_dev;
1230  	}
1231  
1232  	err = dev_set_name(dev, "%s", subsys->name);
1233  	if (err < 0)
1234  		goto err_name;
1235  
1236  	dev->kobj.parent = parent_of_root;
1237  	dev->groups = groups;
1238  	dev->release = system_root_device_release;
1239  
1240  	err = device_register(dev);
1241  	if (err < 0)
1242  		goto err_dev_reg;
1243  
1244  	sp->dev_root = dev;
1245  	subsys_put(sp);
1246  	return 0;
1247  
1248  err_dev_reg:
1249  	put_device(dev);
1250  	dev = NULL;
1251  err_name:
1252  	kfree(dev);
1253  err_dev:
1254  	subsys_put(sp);
1255  err_sp:
1256  	bus_unregister(subsys);
1257  	return err;
1258  }
1259  
1260  /**
1261   * subsys_system_register - register a subsystem at /sys/devices/system/
1262   * @subsys: system subsystem
1263   * @groups: default attributes for the root device
1264   *
1265   * All 'system' subsystems have a /sys/devices/system/<name> root device
1266   * with the name of the subsystem. The root device can carry subsystem-
1267   * wide attributes. All registered devices are below this single root
1268   * device and are named after the subsystem with a simple enumeration
1269   * number appended. The registered devices are not explicitly named;
1270   * only 'id' in the device needs to be set.
1271   *
1272   * Do not use this interface for anything new, it exists for compatibility
1273   * with bad ideas only. New subsystems should use plain subsystems; and
1274   * add the subsystem-wide attributes should be added to the subsystem
1275   * directory itself and not some create fake root-device placed in
1276   * /sys/devices/system/<name>.
1277   */
subsys_system_register(const struct bus_type * subsys,const struct attribute_group ** groups)1278  int subsys_system_register(const struct bus_type *subsys,
1279  			   const struct attribute_group **groups)
1280  {
1281  	return subsys_register(subsys, groups, &system_kset->kobj);
1282  }
1283  EXPORT_SYMBOL_GPL(subsys_system_register);
1284  
1285  /**
1286   * subsys_virtual_register - register a subsystem at /sys/devices/virtual/
1287   * @subsys: virtual subsystem
1288   * @groups: default attributes for the root device
1289   *
1290   * All 'virtual' subsystems have a /sys/devices/system/<name> root device
1291   * with the name of the subystem.  The root device can carry subsystem-wide
1292   * attributes.  All registered devices are below this single root device.
1293   * There's no restriction on device naming.  This is for kernel software
1294   * constructs which need sysfs interface.
1295   */
subsys_virtual_register(const struct bus_type * subsys,const struct attribute_group ** groups)1296  int subsys_virtual_register(const struct bus_type *subsys,
1297  			    const struct attribute_group **groups)
1298  {
1299  	struct kobject *virtual_dir;
1300  
1301  	virtual_dir = virtual_device_parent();
1302  	if (!virtual_dir)
1303  		return -ENOMEM;
1304  
1305  	return subsys_register(subsys, groups, virtual_dir);
1306  }
1307  EXPORT_SYMBOL_GPL(subsys_virtual_register);
1308  
1309  /**
1310   * driver_find - locate driver on a bus by its name.
1311   * @name: name of the driver.
1312   * @bus: bus to scan for the driver.
1313   *
1314   * Call kset_find_obj() to iterate over list of drivers on
1315   * a bus to find driver by name. Return driver if found.
1316   *
1317   * This routine provides no locking to prevent the driver it returns
1318   * from being unregistered or unloaded while the caller is using it.
1319   * The caller is responsible for preventing this.
1320   */
driver_find(const char * name,const struct bus_type * bus)1321  struct device_driver *driver_find(const char *name, const struct bus_type *bus)
1322  {
1323  	struct subsys_private *sp = bus_to_subsys(bus);
1324  	struct kobject *k;
1325  	struct driver_private *priv;
1326  
1327  	if (!sp)
1328  		return NULL;
1329  
1330  	k = kset_find_obj(sp->drivers_kset, name);
1331  	subsys_put(sp);
1332  	if (!k)
1333  		return NULL;
1334  
1335  	priv = to_driver(k);
1336  
1337  	/* Drop reference added by kset_find_obj() */
1338  	kobject_put(k);
1339  	return priv->driver;
1340  }
1341  EXPORT_SYMBOL_GPL(driver_find);
1342  
1343  /*
1344   * Warning, the value could go to "removed" instantly after calling this function, so be very
1345   * careful when calling it...
1346   */
bus_is_registered(const struct bus_type * bus)1347  bool bus_is_registered(const struct bus_type *bus)
1348  {
1349  	struct subsys_private *sp = bus_to_subsys(bus);
1350  	bool is_initialized = false;
1351  
1352  	if (sp) {
1353  		is_initialized = true;
1354  		subsys_put(sp);
1355  	}
1356  	return is_initialized;
1357  }
1358  
1359  /**
1360   * bus_get_dev_root - return a pointer to the "device root" of a bus
1361   * @bus: bus to return the device root of.
1362   *
1363   * If a bus has a "device root" structure, return it, WITH THE REFERENCE
1364   * COUNT INCREMENTED.
1365   *
1366   * Note, when finished with the device, a call to put_device() is required.
1367   *
1368   * If the device root is not present (or bus is not a valid pointer), NULL
1369   * will be returned.
1370   */
bus_get_dev_root(const struct bus_type * bus)1371  struct device *bus_get_dev_root(const struct bus_type *bus)
1372  {
1373  	struct subsys_private *sp = bus_to_subsys(bus);
1374  	struct device *dev_root;
1375  
1376  	if (!sp)
1377  		return NULL;
1378  
1379  	dev_root = get_device(sp->dev_root);
1380  	subsys_put(sp);
1381  	return dev_root;
1382  }
1383  EXPORT_SYMBOL_GPL(bus_get_dev_root);
1384  
buses_init(void)1385  int __init buses_init(void)
1386  {
1387  	bus_kset = kset_create_and_add("bus", &bus_uevent_ops, NULL);
1388  	if (!bus_kset)
1389  		return -ENOMEM;
1390  
1391  	system_kset = kset_create_and_add("system", NULL, &devices_kset->kobj);
1392  	if (!system_kset) {
1393  		/* Do error handling here as devices_init() do */
1394  		kset_unregister(bus_kset);
1395  		bus_kset = NULL;
1396  		pr_err("%s: failed to create and add kset 'bus'\n", __func__);
1397  		return -ENOMEM;
1398  	}
1399  
1400  	return 0;
1401  }
1402