]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/base/bus.c
Merge branch 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[karo-tx-linux.git] / drivers / base / bus.c
index 24eb07868344c14ebaf529173d07fbf1cae4e869..519865b53f761c6a4641433a7092d8f6b9a0d7b2 100644 (file)
@@ -290,7 +290,7 @@ int bus_for_each_dev(struct bus_type *bus, struct device *start,
        struct device *dev;
        int error = 0;
 
-       if (!bus)
+       if (!bus || !bus->p)
                return -EINVAL;
 
        klist_iter_init_node(&bus->p->klist_devices, &i,
@@ -324,7 +324,7 @@ struct device *bus_find_device(struct bus_type *bus,
        struct klist_iter i;
        struct device *dev;
 
-       if (!bus)
+       if (!bus || !bus->p)
                return NULL;
 
        klist_iter_init_node(&bus->p->klist_devices, &i,
@@ -700,12 +700,12 @@ int bus_add_driver(struct device_driver *drv)
        if (error)
                goto out_unregister;
 
+       klist_add_tail(&priv->knode_bus, &bus->p->klist_drivers);
        if (drv->bus->p->drivers_autoprobe) {
                error = driver_attach(drv);
                if (error)
                        goto out_unregister;
        }
-       klist_add_tail(&priv->knode_bus, &bus->p->klist_drivers);
        module_add_driver(drv->owner, drv);
 
        error = driver_create_file(drv, &driver_attr_uevent);