diff options
author | Dave Airlie <airlied@redhat.com> | 2016-04-15 15:10:37 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2016-04-22 10:36:41 +1000 |
commit | cee26ac47dc2c2846ecd0fc80cf857942c1fcd77 (patch) | |
tree | 5f9c84a0ff9a9faa1567cfb2656c333b38d99191 | |
parent | d0f37cf62979e65558c1b7bd4d4c221c5281bae1 (diff) | |
download | op-kernel-dev-cee26ac47dc2c2846ecd0fc80cf857942c1fcd77.zip op-kernel-dev-cee26ac47dc2c2846ecd0fc80cf857942c1fcd77.tar.gz |
drm/mode: use _object_find to find framebuffers.
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>
-rw-r--r-- | drivers/gpu/drm/drm_crtc.c | 35 |
1 files changed, 10 insertions, 25 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 8cee833..0e4e255 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -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; |