drm/syncobj: Add a race-free drm_syncobj_fence_get helper (v2)
[linux-2.6-microblaze.git] / include / drm / drm_syncobj.h
index 89976da..ce94d14 100644 (file)
@@ -77,13 +77,25 @@ drm_syncobj_put(struct drm_syncobj *obj)
        kref_put(&obj->refcount, drm_syncobj_free);
 }
 
+static inline struct dma_fence *
+drm_syncobj_fence_get(struct drm_syncobj *syncobj)
+{
+       struct dma_fence *fence;
+
+       rcu_read_lock();
+       fence = dma_fence_get_rcu_safe(&syncobj->fence);
+       rcu_read_unlock();
+
+       return fence;
+}
+
 struct drm_syncobj *drm_syncobj_find(struct drm_file *file_private,
                                     u32 handle);
 void drm_syncobj_replace_fence(struct drm_syncobj *syncobj,
                               struct dma_fence *fence);
-int drm_syncobj_fence_get(struct drm_file *file_private,
-                         u32 handle,
-                         struct dma_fence **fence);
+int drm_syncobj_find_fence(struct drm_file *file_private,
+                          u32 handle,
+                          struct dma_fence **fence);
 void drm_syncobj_free(struct kref *kref);
 
 #endif