diff options
Diffstat (limited to 'drivers/base/bus.c')
-rw-r--r-- | drivers/base/bus.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/base/bus.c b/drivers/base/bus.c index 20b6dc8706fa..1a5a350eca15 100644 --- a/drivers/base/bus.c +++ b/drivers/base/bus.c | |||
@@ -63,8 +63,19 @@ static struct sysfs_ops driver_sysfs_ops = { | |||
63 | 63 | ||
64 | static void driver_release(struct kobject * kobj) | 64 | static void driver_release(struct kobject * kobj) |
65 | { | 65 | { |
66 | struct device_driver * drv = to_driver(kobj); | 66 | /* |
67 | complete(&drv->unloaded); | 67 | * Yes this is an empty release function, it is this way because struct |
68 | * device is always a static object, not a dynamic one. Yes, this is | ||
69 | * not nice and bad, but remember, drivers are code, reference counted | ||
70 | * by the module count, not a device, which is really data. And yes, | ||
71 | * in the future I do want to have all drivers be created dynamically, | ||
72 | * and am working toward that goal, but it will take a bit longer... | ||
73 | * | ||
74 | * But do not let this example give _anyone_ the idea that they can | ||
75 | * create a release function without any code in it at all, to do that | ||
76 | * is almost always wrong. If you have any questions about this, | ||
77 | * please send an email to <greg@kroah.com> | ||
78 | */ | ||
68 | } | 79 | } |
69 | 80 | ||
70 | static struct kobj_type ktype_driver = { | 81 | static struct kobj_type ktype_driver = { |