@@ -362,8 +362,7 @@ static struct drm_mode_object *_object_find(struct drm_device *dev,
362
362
obj = NULL ;
363
363
/* don't leak out unref'd fb's */
364
364
if (obj &&
365
- (obj -> type == DRM_MODE_OBJECT_FB ||
366
- obj -> type == DRM_MODE_OBJECT_BLOB ))
365
+ obj -> type == DRM_MODE_OBJECT_BLOB )
367
366
obj = NULL ;
368
367
mutex_unlock (& dev -> mode_config .idr_mutex );
369
368
@@ -478,23 +477,6 @@ int drm_framebuffer_init(struct drm_device *dev, struct drm_framebuffer *fb,
478
477
}
479
478
EXPORT_SYMBOL (drm_framebuffer_init );
480
479
481
- static struct drm_framebuffer * __drm_framebuffer_lookup (struct drm_device * dev ,
482
- uint32_t id )
483
- {
484
- struct drm_mode_object * obj = NULL ;
485
- struct drm_framebuffer * fb ;
486
-
487
- mutex_lock (& dev -> mode_config .idr_mutex );
488
- obj = idr_find (& dev -> mode_config .crtc_idr , id );
489
- if (!obj || (obj -> type != DRM_MODE_OBJECT_FB ) || (obj -> id != id ))
490
- fb = NULL ;
491
- else
492
- fb = obj_to_fb (obj );
493
- mutex_unlock (& dev -> mode_config .idr_mutex );
494
-
495
- return fb ;
496
- }
497
-
498
480
/**
499
481
* drm_framebuffer_lookup - look up a drm framebuffer and grab a reference
500
482
* @dev: drm device
@@ -507,11 +489,13 @@ static struct drm_framebuffer *__drm_framebuffer_lookup(struct drm_device *dev,
507
489
struct drm_framebuffer * drm_framebuffer_lookup (struct drm_device * dev ,
508
490
uint32_t id )
509
491
{
510
- struct drm_framebuffer * fb ;
492
+ struct drm_mode_object * obj ;
493
+ struct drm_framebuffer * fb = NULL ;
511
494
512
495
mutex_lock (& dev -> mode_config .fb_lock );
513
- fb = __drm_framebuffer_lookup (dev , id );
514
- if (fb ) {
496
+ obj = _object_find (dev , id , DRM_MODE_OBJECT_FB );
497
+ if (obj ) {
498
+ fb = obj_to_fb (obj );
515
499
if (!kref_get_unless_zero (& fb -> base .refcount ))
516
500
fb = NULL ;
517
501
}
@@ -3489,6 +3473,7 @@ int drm_mode_rmfb(struct drm_device *dev,
3489
3473
{
3490
3474
struct drm_framebuffer * fb = NULL ;
3491
3475
struct drm_framebuffer * fbl = NULL ;
3476
+ struct drm_mode_object * obj ;
3492
3477
uint32_t * id = data ;
3493
3478
int found = 0 ;
3494
3479
@@ -3497,10 +3482,10 @@ int drm_mode_rmfb(struct drm_device *dev,
3497
3482
3498
3483
mutex_lock (& file_priv -> fbs_lock );
3499
3484
mutex_lock (& dev -> mode_config .fb_lock );
3500
- fb = __drm_framebuffer_lookup (dev , * id );
3501
- if (!fb )
3485
+ obj = _object_find (dev , * id , DRM_MODE_OBJECT_FB );
3486
+ if (!obj )
3502
3487
goto fail_lookup ;
3503
-
3488
+ fb = obj_to_fb ( obj );
3504
3489
list_for_each_entry (fbl , & file_priv -> fbs , filp_head )
3505
3490
if (fb == fbl )
3506
3491
found = 1 ;
0 commit comments