On Mon, May 30, 2016 at 09:38:21AM +0100, Chris Wilson wrote:
Protect against drivers that may try to register the connector more than once, or who try to unregister it multiple times.
Signed-off-by: Chris Wilson chris@chris-wilson.co.uk Cc: dri-devel@lists.freedesktop.org
drivers/gpu/drm/drm_crtc.c | 9 +++++++++ include/drm/drm_crtc.h | 1 + 2 files changed, 10 insertions(+)
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 81641544ac3e..8b9ee921a9e1 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -1030,6 +1030,9 @@ int drm_connector_register(struct drm_connector *connector) { int ret;
- if (connector->registered)
return 0;
- ret = drm_sysfs_connector_add(connector); if (ret) return ret;
@@ -1047,6 +1050,7 @@ int drm_connector_register(struct drm_connector *connector)
drm_mode_object_register(connector->dev, &connector->base);
- connector->registered = true; return 0;
err_debugfs: @@ -1065,11 +1069,16 @@ EXPORT_SYMBOL(drm_connector_register); */ void drm_connector_unregister(struct drm_connector *connector) {
if (!connector->registered)
return;
if (connector->funcs->early_unregister) connector->funcs->early_unregister(connector);
drm_sysfs_connector_remove(connector); drm_debugfs_connector_remove(connector);
connector->registered = false;
} EXPORT_SYMBOL(drm_connector_unregister);
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index 77b775cff4e7..35e47eea5ee1 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h @@ -1212,6 +1212,7 @@ struct drm_connector { bool interlace_allowed; bool doublescan_allowed; bool stereo_allowed;
- bool registered;
Needs kerneldoc for this on, with that fixed
Reviewed-by: Daniel Vetter daniel.vetter@ffwll.ch
struct list_head modes; /* list of modes on this connector */
enum drm_connector_status status;
2.8.1
Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx