Revert "base: dd: don't remove driver_data in -EPROBE_DEFER case"
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 3 May 2016 15:06:06 +0000 (08:06 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 3 May 2016 15:06:06 +0000 (08:06 -0700)
This reverts commit ded9db380d34344ee5263002570b9b8b705f7830.

Thierry Reding writes:
This causes a boot regression on at least one board, caused by
one of the drivers looking at driver data to check whether or
not the driver has properly loaded. If the code encounters a
non-NULL pointer it tries to dereference it, but because it's
already been freed there is no memory backing it and things
crash.

I don't think keeping stale pointers around is a good idea. The
whole point of setting this to NULL in the core is so that probe
failures result in the same starting conditions no matter what.

Can we please get this reverted?

Reported-by: Thierry Reding <thierry.reding@gmail.com>
Cc: Yi Zhang <yizhang_hust@163.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/dd.c

index dae6cefa606063610ccf1c48cbd559b0892bcde8..16688f50729cfac7112a740804c00b226680ca4a 100644 (file)
@@ -402,8 +402,7 @@ pinctrl_bind_failed:
        devres_release_all(dev);
        driver_sysfs_remove(dev);
        dev->driver = NULL;
-       if (ret != -EPROBE_DEFER)
-               dev_set_drvdata(dev, NULL);
+       dev_set_drvdata(dev, NULL);
        if (dev->pm_domain && dev->pm_domain->dismiss)
                dev->pm_domain->dismiss(dev);
        pm_runtime_reinit(dev);
This page took 0.026837 seconds and 5 git commands to generate.