]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/base/driver.c
Merge /spare/repo/linux-2.6/
[linux-2.6-omap-h63xx.git] / drivers / base / driver.c
index 291c5954a3af58afd353a8a6369850a5bf19e483..ef3fe513e39855f60e2e73a771d558a1b91b1dab 100644 (file)
@@ -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);
 }