aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-01-31 19:55:04 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2016-01-31 19:55:04 -0500
commitf3ca903fbbb0d26221a39cbebfe6dd4efbebd3ef (patch)
treecc317a177a169a55af82a8ab1eafe5245e2a7705
parent510ae0c994cb38fcf5033ad69eb8103552e335e8 (diff)
parent25cad69f21f5532d99e2ee73c8ab6512bcab614c (diff)
Merge tag 'driver-core-4.5-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
Pull driver core fix from Greg KH: "Here's a single driver core fix that resolves an issue a lot of users have been hitting for a while now. It's been tested a lot and has been in linux-next successfully for a while" * tag 'driver-core-4.5-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: base/platform: Fix platform drivers with no probe callback
-rw-r--r--drivers/base/platform.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/base/platform.c b/drivers/base/platform.c
index 73d6e5d39e33..f437afa17f2b 100644
--- a/drivers/base/platform.c
+++ b/drivers/base/platform.c
@@ -558,10 +558,15 @@ static int platform_drv_probe(struct device *_dev)
558 return ret; 558 return ret;
559 559
560 ret = dev_pm_domain_attach(_dev, true); 560 ret = dev_pm_domain_attach(_dev, true);
561 if (ret != -EPROBE_DEFER && drv->probe) { 561 if (ret != -EPROBE_DEFER) {
562 ret = drv->probe(dev); 562 if (drv->probe) {
563 if (ret) 563 ret = drv->probe(dev);
564 dev_pm_domain_detach(_dev, true); 564 if (ret)
565 dev_pm_domain_detach(_dev, true);
566 } else {
567 /* don't fail if just dev_pm_domain_attach failed */
568 ret = 0;
569 }
565 } 570 }
566 571
567 if (drv->prevent_deferred_probe && ret == -EPROBE_DEFER) { 572 if (drv->prevent_deferred_probe && ret == -EPROBE_DEFER) {