drm/mode: use _object_find to find framebuffers.
authorDave Airlie <airlied@redhat.com>
Fri, 15 Apr 2016 05:10:37 +0000 (15:10 +1000)
committerDave Airlie <airlied@redhat.com>
Fri, 22 Apr 2016 00:36:41 +0000 (10:36 +1000)
No point have this code dupliated at this point, use the
_object_find code instead now.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/drm_crtc.c

index 8cee833edc6e11d9f2307c893367e11cefdc8a97..0e4e25509c3d5c5bb9f821ba66d6c58c642b69de 100644 (file)
@@ -362,8 +362,7 @@ static struct drm_mode_object *_object_find(struct drm_device *dev,
                obj = NULL;
        /* don't leak out unref'd fb's */
        if (obj &&
-           (obj->type == DRM_MODE_OBJECT_FB ||
-            obj->type == DRM_MODE_OBJECT_BLOB))
+           obj->type == DRM_MODE_OBJECT_BLOB)
                obj = NULL;
        mutex_unlock(&dev->mode_config.idr_mutex);
 
@@ -478,23 +477,6 @@ out:
 }
 EXPORT_SYMBOL(drm_framebuffer_init);
 
-static struct drm_framebuffer *__drm_framebuffer_lookup(struct drm_device *dev,
-                                                       uint32_t id)
-{
-       struct drm_mode_object *obj = NULL;
-       struct drm_framebuffer *fb;
-
-       mutex_lock(&dev->mode_config.idr_mutex);
-       obj = idr_find(&dev->mode_config.crtc_idr, id);
-       if (!obj || (obj->type != DRM_MODE_OBJECT_FB) || (obj->id != id))
-               fb = NULL;
-       else
-               fb = obj_to_fb(obj);
-       mutex_unlock(&dev->mode_config.idr_mutex);
-
-       return fb;
-}
-
 /**
  * drm_framebuffer_lookup - look up a drm framebuffer and grab a reference
  * @dev: drm device
@@ -507,11 +489,13 @@ static struct drm_framebuffer *__drm_framebuffer_lookup(struct drm_device *dev,
 struct drm_framebuffer *drm_framebuffer_lookup(struct drm_device *dev,
                                               uint32_t id)
 {
-       struct drm_framebuffer *fb;
+       struct drm_mode_object *obj;
+       struct drm_framebuffer *fb = NULL;
 
        mutex_lock(&dev->mode_config.fb_lock);
-       fb = __drm_framebuffer_lookup(dev, id);
-       if (fb) {
+       obj = _object_find(dev, id, DRM_MODE_OBJECT_FB);
+       if (obj) {
+               fb = obj_to_fb(obj);
                if (!kref_get_unless_zero(&fb->base.refcount))
                        fb = NULL;
        }
@@ -3489,6 +3473,7 @@ int drm_mode_rmfb(struct drm_device *dev,
 {
        struct drm_framebuffer *fb = NULL;
        struct drm_framebuffer *fbl = NULL;
+       struct drm_mode_object *obj;
        uint32_t *id = data;
        int found = 0;
 
@@ -3497,10 +3482,10 @@ int drm_mode_rmfb(struct drm_device *dev,
 
        mutex_lock(&file_priv->fbs_lock);
        mutex_lock(&dev->mode_config.fb_lock);
-       fb = __drm_framebuffer_lookup(dev, *id);
-       if (!fb)
+       obj = _object_find(dev, *id, DRM_MODE_OBJECT_FB);
+       if (!obj)
                goto fail_lookup;
-
+       fb = obj_to_fb(obj);
        list_for_each_entry(fbl, &file_priv->fbs, filp_head)
                if (fb == fbl)
                        found = 1;