diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index 24eb07868344c14ebaf529173d07fbf1cae4e869..f9d31320bd3789cb2617d0c9a62e1954cbbd5bbc 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -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);