]> Pileus Git - ~andy/linux/blobdiff - drivers/base/bus.c
Merge tag 'upstream-3.9-rc6' of git://git.infradead.org/linux-ubifs
[~andy/linux] / 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);