All blob properties currently go on the device-global property list, which is reaped at device exit. Make the addition to the list optional, to allow for user properties whose lifetime will be tied to their drm_file. Signed-off-by: Daniel Stone <daniels@xxxxxxxxxxxxx> --- drivers/gpu/drm/drm_crtc.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index c1b3801..21e2052 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -4118,7 +4118,7 @@ done: static struct drm_property_blob * drm_property_create_blob(struct drm_device *dev, size_t length, - const void *data) + const void *data, bool global) { struct drm_property_blob *blob; int ret; @@ -4140,7 +4140,10 @@ drm_property_create_blob(struct drm_device *dev, size_t length, memcpy(blob->data, data, length); - list_add_tail(&blob->head, &dev->mode_config.property_blob_list); + if (global) + list_add_tail(&blob->head, + &dev->mode_config.property_blob_list); + return blob; } @@ -4233,7 +4236,7 @@ int drm_mode_connector_set_path_property(struct drm_connector *connector, int ret; connector->path_blob_ptr = drm_property_create_blob(connector->dev, - size, path); + size, path, true); if (!connector->path_blob_ptr) return -EINVAL; @@ -4279,7 +4282,7 @@ int drm_mode_connector_set_tile_property(struct drm_connector *connector) size = strlen(tile) + 1; connector->tile_blob_ptr = drm_property_create_blob(connector->dev, - size, tile); + size, tile, true); if (!connector->tile_blob_ptr) return -EINVAL; @@ -4324,7 +4327,7 @@ int drm_mode_connector_update_edid_property(struct drm_connector *connector, size = EDID_LENGTH * (1 + edid->extensions); connector->edid_blob_ptr = drm_property_create_blob(connector->dev, - size, edid); + size, edid, true); if (!connector->edid_blob_ptr) return -EINVAL; -- 2.3.2 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel