]> git.karo-electronics.de Git - linux-beck.git/commitdiff
base: dd: don't remove driver_data in -EPROBE_DEFER case
authorYi Zhang <yizhang_hust@163.com>
Tue, 8 Mar 2016 15:15:22 +0000 (23:15 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 1 May 2016 21:22:17 +0000 (14:22 -0700)
the driver_data may be used for sanity check, it fails the
probe() if driver_data is NULL after it is re-triggered.
for example, soc_probe() in sound/soc/soc-core.c

Signed-off-by: Yi Zhang <yizhang_hust@163.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/dd.c

index 16688f50729cfac7112a740804c00b226680ca4a..dae6cefa606063610ccf1c48cbd559b0892bcde8 100644 (file)
@@ -402,7 +402,8 @@ pinctrl_bind_failed:
        devres_release_all(dev);
        driver_sysfs_remove(dev);
        dev->driver = NULL;
-       dev_set_drvdata(dev, NULL);
+       if (ret != -EPROBE_DEFER)
+               dev_set_drvdata(dev, NULL);
        if (dev->pm_domain && dev->pm_domain->dismiss)
                dev->pm_domain->dismiss(dev);
        pm_runtime_reinit(dev);