diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2006-09-18 16:24:28 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-09-26 00:08:40 -0400 |
commit | 81107bf531d2524afbcd61f3b4ad57a71295d591 (patch) | |
tree | 8c4f985714432bee996720c2d8e4bcfbe3d70575 /drivers/base/bus.c | |
parent | f2eaae197f4590c4d96f31b09b0ee9067421a95c (diff) |
Driver core: Remove unneeded routines from driver core
This patch (as783) simplifies the driver core slightly by removing four
unnecessary _get and _put methods.
It is vital that when a driver is removed from its bus's klist of
registered drivers, or when a device is removed from a driver's klist
of bound devices, that the klist updates complete synchronously.
Otherwise the kernel might try binding an unregistered driver to a
newly-registered device, or adding a device to the klist for a new
driver before it has been removed from the old driver's klist.
Since the removals must be synchronous, they don't need to update any
reference counts. Hence the _get and _put methods can be dispensed
with.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/base/bus.c')
-rw-r--r-- | drivers/base/bus.c | 18 |
1 files changed, 1 insertions, 17 deletions
diff --git a/drivers/base/bus.c b/drivers/base/bus.c index 636af538a2b5..12173d16bea7 100644 --- a/drivers/base/bus.c +++ b/drivers/base/bus.c | |||
@@ -696,22 +696,6 @@ static void klist_devices_put(struct klist_node *n) | |||
696 | put_device(dev); | 696 | put_device(dev); |
697 | } | 697 | } |
698 | 698 | ||
699 | static void klist_drivers_get(struct klist_node *n) | ||
700 | { | ||
701 | struct device_driver *drv = container_of(n, struct device_driver, | ||
702 | knode_bus); | ||
703 | |||
704 | get_driver(drv); | ||
705 | } | ||
706 | |||
707 | static void klist_drivers_put(struct klist_node *n) | ||
708 | { | ||
709 | struct device_driver *drv = container_of(n, struct device_driver, | ||
710 | knode_bus); | ||
711 | |||
712 | put_driver(drv); | ||
713 | } | ||
714 | |||
715 | /** | 699 | /** |
716 | * bus_register - register a bus with the system. | 700 | * bus_register - register a bus with the system. |
717 | * @bus: bus. | 701 | * @bus: bus. |
@@ -747,7 +731,7 @@ int bus_register(struct bus_type * bus) | |||
747 | goto bus_drivers_fail; | 731 | goto bus_drivers_fail; |
748 | 732 | ||
749 | klist_init(&bus->klist_devices, klist_devices_get, klist_devices_put); | 733 | klist_init(&bus->klist_devices, klist_devices_get, klist_devices_put); |
750 | klist_init(&bus->klist_drivers, klist_drivers_get, klist_drivers_put); | 734 | klist_init(&bus->klist_drivers, NULL, NULL); |
751 | bus_add_attrs(bus); | 735 | bus_add_attrs(bus); |
752 | 736 | ||
753 | pr_debug("bus type '%s' registered\n", bus->name); | 737 | pr_debug("bus type '%s' registered\n", bus->name); |