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/driver.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/driver.c')
-rw-r--r-- | drivers/base/driver.c | 16 |
1 files changed, 1 insertions, 15 deletions
diff --git a/drivers/base/driver.c b/drivers/base/driver.c index 562600dd540a..1214cbd17d86 100644 --- a/drivers/base/driver.c +++ b/drivers/base/driver.c | |||
@@ -142,20 +142,6 @@ void put_driver(struct device_driver * drv) | |||
142 | kobject_put(&drv->kobj); | 142 | kobject_put(&drv->kobj); |
143 | } | 143 | } |
144 | 144 | ||
145 | static void klist_devices_get(struct klist_node *n) | ||
146 | { | ||
147 | struct device *dev = container_of(n, struct device, knode_driver); | ||
148 | |||
149 | get_device(dev); | ||
150 | } | ||
151 | |||
152 | static void klist_devices_put(struct klist_node *n) | ||
153 | { | ||
154 | struct device *dev = container_of(n, struct device, knode_driver); | ||
155 | |||
156 | put_device(dev); | ||
157 | } | ||
158 | |||
159 | /** | 145 | /** |
160 | * driver_register - register driver with bus | 146 | * driver_register - register driver with bus |
161 | * @drv: driver to register | 147 | * @drv: driver to register |
@@ -175,7 +161,7 @@ int driver_register(struct device_driver * drv) | |||
175 | (drv->bus->shutdown && drv->shutdown)) { | 161 | (drv->bus->shutdown && drv->shutdown)) { |
176 | printk(KERN_WARNING "Driver '%s' needs updating - please use bus_type methods\n", drv->name); | 162 | printk(KERN_WARNING "Driver '%s' needs updating - please use bus_type methods\n", drv->name); |
177 | } | 163 | } |
178 | klist_init(&drv->klist_devices, klist_devices_get, klist_devices_put); | 164 | klist_init(&drv->klist_devices, NULL, NULL); |
179 | init_completion(&drv->unloaded); | 165 | init_completion(&drv->unloaded); |
180 | return bus_add_driver(drv); | 166 | return bus_add_driver(drv); |
181 | } | 167 | } |