summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-05-03 08:06:06 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-05-03 08:06:06 -0700
commitc6e360a0d9d282e9c8688dcdabdc3669912b66ef (patch)
tree456fa050698cb190002244a43f5cd9ec2582a29e
parentcc736607c86d39ea078519af0de6ee0fbf3096a6 (diff)
downloadop-kernel-dev-c6e360a0d9d282e9c8688dcdabdc3669912b66ef.zip
op-kernel-dev-c6e360a0d9d282e9c8688dcdabdc3669912b66ef.tar.gz
Revert "base: dd: don't remove driver_data in -EPROBE_DEFER case"
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>
-rw-r--r--drivers/base/dd.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/base/dd.c b/drivers/base/dd.c
index dae6cef..16688f5 100644
--- a/drivers/base/dd.c
+++ b/drivers/base/dd.c
@@ -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);
OpenPOWER on IntegriCloud