}
 
                if (!obj->properties) {
-                       drm_mode_object_unreference(obj);
+                       drm_mode_object_put(obj);
                        ret = -ENOENT;
                        goto out;
                }
 
                if (get_user(count_props, count_props_ptr + copied_objs)) {
-                       drm_mode_object_unreference(obj);
+                       drm_mode_object_put(obj);
                        ret = -EFAULT;
                        goto out;
                }
                        struct drm_property *prop;
 
                        if (get_user(prop_id, props_ptr + copied_props)) {
-                               drm_mode_object_unreference(obj);
+                               drm_mode_object_put(obj);
                                ret = -EFAULT;
                                goto out;
                        }
 
                        prop = drm_mode_obj_find_prop_id(obj, prop_id);
                        if (!prop) {
-                               drm_mode_object_unreference(obj);
+                               drm_mode_object_put(obj);
                                ret = -ENOENT;
                                goto out;
                        }
                        if (copy_from_user(&prop_value,
                                           prop_values_ptr + copied_props,
                                           sizeof(prop_value))) {
-                               drm_mode_object_unreference(obj);
+                               drm_mode_object_put(obj);
                                ret = -EFAULT;
                                goto out;
                        }
 
                        ret = atomic_set_prop(state, obj, prop, prop_value);
                        if (ret) {
-                               drm_mode_object_unreference(obj);
+                               drm_mode_object_put(obj);
                                goto out;
                        }
 
                        plane_mask |= (1 << drm_plane_index(plane));
                        plane->old_fb = plane->fb;
                }
-               drm_mode_object_unreference(obj);
+               drm_mode_object_put(obj);
        }
 
        ret = prepare_crtc_signaling(dev, state, arg, file_priv, &fence_state,
 
  *
  * This function is used to look up a modeset object. It will acquire a
  * reference for reference counted objects. This reference must be dropped again
- * by callind drm_mode_object_unreference().
+ * by callind drm_mode_object_put().
  */
 struct drm_mode_object *drm_mode_object_find(struct drm_device *dev,
                uint32_t id, uint32_t type)
 EXPORT_SYMBOL(drm_mode_object_find);
 
 /**
- * drm_mode_object_unreference - decr the object refcnt
- * @obj: mode_object
+ * drm_mode_object_put - release a mode object reference
+ * @obj: DRM mode object
  *
  * This function decrements the object's refcount if it is a refcounted modeset
  * object. It is a no-op on any other object. This is used to drop references
- * acquired with drm_mode_object_reference().
+ * acquired with drm_mode_object_get().
  */
-void drm_mode_object_unreference(struct drm_mode_object *obj)
+void drm_mode_object_put(struct drm_mode_object *obj)
 {
        if (obj->free_cb) {
                DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, atomic_read(&obj->refcount.refcount));
                kref_put(&obj->refcount, obj->free_cb);
        }
 }
-EXPORT_SYMBOL(drm_mode_object_unreference);
+EXPORT_SYMBOL(drm_mode_object_put);
 
 /**
- * drm_mode_object_reference - incr the object refcnt
- * @obj: mode_object
+ * drm_mode_object_get - acquire a mode object reference
+ * @obj: DRM mode object
  *
  * This function increments the object's refcount if it is a refcounted modeset
  * object. It is a no-op on any other object. References should be dropped again
- * by calling drm_mode_object_unreference().
+ * by calling drm_mode_object_put().
  */
-void drm_mode_object_reference(struct drm_mode_object *obj)
+void drm_mode_object_get(struct drm_mode_object *obj)
 {
        if (obj->free_cb) {
                DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, atomic_read(&obj->refcount.refcount));
                kref_get(&obj->refcount);
        }
 }
-EXPORT_SYMBOL(drm_mode_object_reference);
+EXPORT_SYMBOL(drm_mode_object_get);
 
 /**
  * drm_object_attach_property - attach a property to a modeset object
                        &arg->count_props);
 
 out_unref:
-       drm_mode_object_unreference(obj);
+       drm_mode_object_put(obj);
 out:
        drm_modeset_unlock_all(dev);
        return ret;
        drm_property_change_valid_put(property, ref);
 
 out_unref:
-       drm_mode_object_unreference(arg_obj);
+       drm_mode_object_put(arg_obj);
 out:
        drm_modeset_unlock_all(dev);
        return ret;
 
        if (!blob)
                return;
 
-       drm_mode_object_unreference(&blob->base);
+       drm_mode_object_put(&blob->base);
 }
 EXPORT_SYMBOL(drm_property_unreference_blob);
 
  */
 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);
                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));
 }
 
  *   drm_object_attach_property() before the object is visible to userspace.
  *
  * - For objects with dynamic lifetimes (as indicated by a non-NULL @free_cb) it
- *   provides reference counting through drm_mode_object_reference() and
- *   drm_mode_object_unreference(). This is used by &drm_framebuffer,
- *   &drm_connector and &drm_property_blob. These objects provide specialized
- *   reference counting wrappers.
+ *   provides reference counting through drm_mode_object_get() and
+ *   drm_mode_object_put(). This is used by &drm_framebuffer, &drm_connector
+ *   and &drm_property_blob. These objects provide specialized reference
+ *   counting wrappers.
  */
 struct drm_mode_object {
        uint32_t id;
 
 struct drm_mode_object *drm_mode_object_find(struct drm_device *dev,
                                             uint32_t id, uint32_t type);
-void drm_mode_object_reference(struct drm_mode_object *obj);
-void drm_mode_object_unreference(struct drm_mode_object *obj);
+void drm_mode_object_get(struct drm_mode_object *obj);
+void drm_mode_object_put(struct drm_mode_object *obj);
+
+/**
+ * drm_mode_object_reference - acquire a mode object reference
+ * @obj: DRM mode object
+ *
+ * This is a compatibility alias for drm_mode_object_get() and should not be
+ * used by new code.
+ */
+static inline void drm_mode_object_reference(struct drm_mode_object *obj)
+{
+       drm_mode_object_get(obj);
+}
+
+/**
+ * drm_mode_object_unreference - release a mode object reference
+ * @obj: DRM mode object
+ *
+ * This is a compatibility alias for drm_mode_object_put() and should not be
+ * used by new code.
+ */
+static inline void drm_mode_object_unreference(struct drm_mode_object *obj)
+{
+       drm_mode_object_put(obj);
+}
 
 int drm_object_property_set_value(struct drm_mode_object *obj,
                                  struct drm_property *property,
 
--- /dev/null
+///
+/// Use drm_*_get() and drm_*_put() helpers instead of drm_*_reference() and
+/// drm_*_unreference() helpers.
+///
+// Confidence: High
+// Copyright: (C) 2017 NVIDIA Corporation
+// Options: --no-includes --include-headers
+//
+
+virtual patch
+virtual report
+
+@depends on patch@
+expression object;
+@@
+
+(
+- drm_mode_object_reference(object)
++ drm_mode_object_get(object)
+|
+- drm_mode_object_unreference(object)
++ drm_mode_object_put(object)
+)
+
+@r depends on report@
+expression object;
+position p;
+@@
+
+(
+drm_mode_object_unreference@p(object)
+|
+drm_mode_object_reference@p(object)
+)
+
+@script:python depends on report@
+object << r.object;
+p << r.p;
+@@
+
+msg="WARNING: use get/put helpers to reference and dereference %s" % (object)
+coccilib.report.print_report(p[0], msg)