drm: Introduce drm_mode_object_{get,put}()

For consistency with other reference counting APIs in the kernel, add
drm_mode_object_get() and drm_mode_object_put() to reference count DRM
mode objects.

Compatibility aliases are added to keep existing code working. To help
speed up the transition, all the instances of the old functions in the
DRM core are already replaced in this commit.

A semantic patch is provided that can be used to convert all drivers to
the new helpers.

Reviewed-by: Sean Paul <seanpaul@chromium.org>
Acked-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170228144643.5668-3-thierry.reding@gmail.com
This commit is contained in:
Thierry Reding
2017-02-28 15:46:38 +01:00
parent 2135ea7aaf
commit 020a218f95
5 changed files with 95 additions and 29 deletions

View File

@@ -597,7 +597,7 @@ void drm_property_unreference_blob(struct drm_property_blob *blob)
if (!blob)
return;
drm_mode_object_unreference(&blob->base);
drm_mode_object_put(&blob->base);
}
EXPORT_SYMBOL(drm_property_unreference_blob);
@@ -625,7 +625,7 @@ void drm_property_destroy_user_blobs(struct drm_device *dev,
*/
struct drm_property_blob *drm_property_reference_blob(struct drm_property_blob *blob)
{
drm_mode_object_reference(&blob->base);
drm_mode_object_get(&blob->base);
return blob;
}
EXPORT_SYMBOL(drm_property_reference_blob);
@@ -906,7 +906,7 @@ void drm_property_change_valid_put(struct drm_property *property,
return;
if (drm_property_type_is(property, DRM_MODE_PROP_OBJECT)) {
drm_mode_object_unreference(ref);
drm_mode_object_put(ref);
} else if (drm_property_type_is(property, DRM_MODE_PROP_BLOB))
drm_property_unreference_blob(obj_to_blob(ref));
}