diff mbox

drm: Remove warning from drm_connector_unregister_all()

Message ID 1461190874-32674-1-git-send-email-laurent.pinchart+renesas@ideasonboard.com (mailing list archive)
State New, archived
Headers show

Commit Message

Laurent Pinchart April 20, 2016, 10:21 p.m. UTC
Commit 6c87e5c3ec6d ("drm: Rename drm_connector_unplug_all() to
drm_connector_unregister_all()") replaced a manual connectors list walk
in drm_connector_unregister_all() with drm_for_each_connector(). The
list was walked without the mode config mutex locked as that ends up in
a clash with sysfs, but drm_connector_unregister_all() warns when the
mutex isn't locked.

The problem is known and doesn't require a large warning every time
drm_connector_unregister_all() is called. Fix it by reverting to manual
list walk.

Fixes: 6c87e5c3ec6d ("drm: Rename drm_connector_unplug_all() to drm_connector_unregister_all()")
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
 drivers/gpu/drm/drm_crtc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Daniel Vetter April 21, 2016, 7:17 a.m. UTC | #1
On Thu, Apr 21, 2016 at 01:21:14AM +0300, Laurent Pinchart wrote:
> Commit 6c87e5c3ec6d ("drm: Rename drm_connector_unplug_all() to
> drm_connector_unregister_all()") replaced a manual connectors list walk
> in drm_connector_unregister_all() with drm_for_each_connector(). The
> list was walked without the mode config mutex locked as that ends up in
> a clash with sysfs, but drm_connector_unregister_all() warns when the
> mutex isn't locked.
> 
> The problem is known and doesn't require a large warning every time
> drm_connector_unregister_all() is called. Fix it by reverting to manual
> list walk.
> 
> Fixes: 6c87e5c3ec6d ("drm: Rename drm_connector_unplug_all() to drm_connector_unregister_all()")
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>

My apologies for missing this when reviewing the patch. Applied to
drm-misc, thanks.
-Daniel

> ---
>  drivers/gpu/drm/drm_crtc.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index 55ffde5a3a4a..1eab5ab472db 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -1082,7 +1082,7 @@ void drm_connector_unregister_all(struct drm_device *dev)
>  	struct drm_connector *connector;
>  
>  	/* FIXME: taking the mode config mutex ends up in a clash with sysfs */
> -	drm_for_each_connector(connector, dev)
> +	list_for_each_entry(connector, &dev->mode_config.connector_list, head)
>  		drm_connector_unregister(connector);
>  }
>  EXPORT_SYMBOL(drm_connector_unregister_all);
> -- 
> Regards,
> 
> Laurent Pinchart
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 55ffde5a3a4a..1eab5ab472db 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -1082,7 +1082,7 @@  void drm_connector_unregister_all(struct drm_device *dev)
 	struct drm_connector *connector;
 
 	/* FIXME: taking the mode config mutex ends up in a clash with sysfs */
-	drm_for_each_connector(connector, dev)
+	list_for_each_entry(connector, &dev->mode_config.connector_list, head)
 		drm_connector_unregister(connector);
 }
 EXPORT_SYMBOL(drm_connector_unregister_all);