diff mbox

[1/2] driver core: skip removal test for non-removable drivers

Message ID 20161011184103.17744-1-robh@kernel.org
State Accepted
Commit c5f0627488be996e833038bdba01e45698ddaa26
Headers show

Commit Message

Rob Herring Oct. 11, 2016, 6:41 p.m. UTC
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>

---
 drivers/base/dd.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

-- 
2.10.0

Comments

Laszlo Ersek Oct. 12, 2016, 7:10 a.m. UTC | #1
Hi Rob,

On 10/11/16 20:41, Rob Herring wrote:
> 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>

> ---

>  drivers/base/dd.c | 3 ++-

>  1 file changed, 2 insertions(+), 1 deletion(-)

> 

> diff --git a/drivers/base/dd.c b/drivers/base/dd.c

> index d22a7260f42b..8937a7ad7165 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) {

>  		/*

> 


can you please repost the full series with me CC'd on all of the
messages; I'm not subscribed to LKML.

Thanks,
Laszlo
diff mbox

Patch

diff --git a/drivers/base/dd.c b/drivers/base/dd.c
index d22a7260f42b..8937a7ad7165 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) {
 		/*