diff options
| author | Patrick Mochel <mochel@osdl.org> | 2002-10-16 02:35:40 -0700 |
|---|---|---|
| committer | Patrick Mochel <mochel@osdl.org> | 2002-10-16 02:35:40 -0700 |
| commit | 5f330849a1cd4ca64c94c12ecc941f97697c6ded (patch) | |
| tree | f7be9f86da14f6556276f9f4fd855f9529964757 /drivers/base | |
| parent | 0447d4d59e85bb0c177fcc858a4fef8671a6cf04 (diff) | |
driver model: make sure device has driver when we add it to the class.
There is a chance devclass_add_device() could get passed a device with no driver, so
we need to check that.
Diffstat (limited to 'drivers/base')
| -rw-r--r-- | drivers/base/class.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/drivers/base/class.c b/drivers/base/class.c index 3c7024cc3efb..21860a1380f7 100644 --- a/drivers/base/class.c +++ b/drivers/base/class.c @@ -53,16 +53,20 @@ static void unenum_device(struct device_class * cls, struct device * dev) int devclass_add_device(struct device * dev) { - struct device_class * cls = dev->driver->devclass; + struct device_class * cls; int error = 0; - if (cls) { - pr_debug("adding device '%s' to class '%s'\n", - dev->name,cls->name); - if (cls->add_device) - error = cls->add_device(dev); - if (!error) { - enum_device(cls,dev); - interface_add(cls,dev); + + if (dev->driver) { + cls = dev->driver->devclass; + if (cls) { + pr_debug("adding device '%s' to class '%s'\n", + dev->name,cls->name); + if (cls->add_device) + error = cls->add_device(dev); + if (!error) { + enum_device(cls,dev); + interface_add(cls,dev); + } } } return error; |
