Commit 190888ac authored by Ming Lei's avatar Ming Lei Committed by Greg Kroah-Hartman

driver core: fix possible missing of device probe

Inside bus_add_driver(), one device might be added(device_add()) into
the bus or probed which is triggered by deferred probe
just after completing of driver_attach() and before
'klist_add_tail(&priv->knode_bus, &bus->p->klist_drivers)',
so the device won't be probed by this driver.

This patch moves the below line

	'klist_add_tail(&priv->knode_bus, &bus->p->klist_drivers)'

before driver_attach() inside bus_add_driver() to fix the
problem.
Signed-off-by: default avatarMing Lei <ming.lei@canonical.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 1884bd4b
...@@ -700,12 +700,12 @@ int bus_add_driver(struct device_driver *drv) ...@@ -700,12 +700,12 @@ int bus_add_driver(struct device_driver *drv)
if (error) if (error)
goto out_unregister; goto out_unregister;
klist_add_tail(&priv->knode_bus, &bus->p->klist_drivers);
if (drv->bus->p->drivers_autoprobe) { if (drv->bus->p->drivers_autoprobe) {
error = driver_attach(drv); error = driver_attach(drv);
if (error) if (error)
goto out_unregister; goto out_unregister;
} }
klist_add_tail(&priv->knode_bus, &bus->p->klist_drivers);
module_add_driver(drv->owner, drv); module_add_driver(drv->owner, drv);
error = driver_create_file(drv, &driver_attr_uevent); error = driver_create_file(drv, &driver_attr_uevent);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment