driver-core: platform_driver_probe() must probe synchronously
Because platform_driver_probe() checks, after trying to register driver, if there are any devices that driver successfully bound to, driver's probe routine must be run synchronously. Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
d173a137c5
Коммит
5c36eb2a9e
|
@ -613,6 +613,19 @@ int __init_or_module __platform_driver_probe(struct platform_driver *drv,
|
|||
{
|
||||
int retval, code;
|
||||
|
||||
if (drv->driver.probe_type == PROBE_PREFER_ASYNCHRONOUS) {
|
||||
pr_err("%s: drivers registered with %s can not be probed asynchronously\n",
|
||||
drv->driver.name, __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/*
|
||||
* We have to run our probes synchronously because we check if
|
||||
* we find any devices to bind to and exit with error if there
|
||||
* are any.
|
||||
*/
|
||||
drv->driver.probe_type = PROBE_FORCE_SYNCHRONOUS;
|
||||
|
||||
/*
|
||||
* Prevent driver from requesting probe deferral to avoid further
|
||||
* futile probe attempts.
|
||||
|
|
Загрузка…
Ссылка в новой задаче