summaryrefslogtreecommitdiff
path: root/drivers/base
diff options
context:
space:
mode:
authorRob Herring <robh@kernel.org>2016-10-11 18:41:02 (GMT)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-10-31 15:15:22 (GMT)
commitc5f0627488be996e833038bdba01e45698ddaa26 (patch)
treeadc2fe9d43bc3dc5e0564ce09429c4e69a96a251 /drivers/base
parenta909d3e636995ba7c349e2ca5dbb528154d4ac30 (diff)
downloadlinux-c5f0627488be996e833038bdba01e45698ddaa26.tar.xz
driver core: skip removal test for non-removable drivers
Some drivers do not support removal/unbinding. These drivers should have drv->suppress_bind_attrs set to true, so use that to skip the removal test. This doesn't fix anything reported so far, but should prevent some other cases. Some drivers will need fixes to set suppress_bind_attrs to avoid this test. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=177021 Fixes: bea5b158ff0d ("driver core: add test of driver remove calls during probe") Reported-by: Laszlo Ersek <lersek@redhat.com> Signed-off-by: Rob Herring <robh@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/base')
-rw-r--r--drivers/base/dd.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/base/dd.c b/drivers/base/dd.c
index d22a726..8937a7a 100644
--- a/drivers/base/dd.c
+++ b/drivers/base/dd.c
@@ -324,7 +324,8 @@ static int really_probe(struct device *dev, struct device_driver *drv)
{
int ret = -EPROBE_DEFER;
int local_trigger_count = atomic_read(&deferred_trigger_count);
- bool test_remove = IS_ENABLED(CONFIG_DEBUG_TEST_DRIVER_REMOVE);
+ bool test_remove = IS_ENABLED(CONFIG_DEBUG_TEST_DRIVER_REMOVE) &&
+ !drv->suppress_bind_attrs;
if (defer_all_probes) {
/*