summaryrefslogtreecommitdiffstats
path: root/drivers/base/driver.c
diff options
context:
space:
mode:
authorJeff Garzik <jgarzik@pobox.com>2005-09-08 05:41:28 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-09-08 05:41:28 -0400
commit142e27fc8a3619471669d6241784eec9167c47d1 (patch)
treee88850b63ec910ee28874f93c43fb66421bb8119 /drivers/base/driver.c
parenta9053d0494d3c92807701c0f47df61d50c971581 (diff)
parentcaf39e87cc1182f7dae84eefc43ca14d54c78ef9 (diff)
downloadblackbird-op-linux-142e27fc8a3619471669d6241784eec9167c47d1.tar.gz
blackbird-op-linux-142e27fc8a3619471669d6241784eec9167c47d1.zip
Merge /spare/repo/linux-2.6/
Diffstat (limited to 'drivers/base/driver.c')
-rw-r--r--drivers/base/driver.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/base/driver.c b/drivers/base/driver.c
index 291c5954a3af..ef3fe513e398 100644
--- a/drivers/base/driver.c
+++ b/drivers/base/driver.c
@@ -142,6 +142,19 @@ void put_driver(struct device_driver * drv)
kobject_put(&drv->kobj);
}
+static void klist_devices_get(struct klist_node *n)
+{
+ struct device *dev = container_of(n, struct device, knode_driver);
+
+ get_device(dev);
+}
+
+static void klist_devices_put(struct klist_node *n)
+{
+ struct device *dev = container_of(n, struct device, knode_driver);
+
+ put_device(dev);
+}
/**
* driver_register - register driver with bus
@@ -157,7 +170,7 @@ void put_driver(struct device_driver * drv)
*/
int driver_register(struct device_driver * drv)
{
- klist_init(&drv->klist_devices);
+ klist_init(&drv->klist_devices, klist_devices_get, klist_devices_put);
init_completion(&drv->unloaded);
return bus_add_driver(drv);
}
OpenPOWER on IntegriCloud