diff options
Diffstat (limited to 'drivers/gpu/drm/vc4/vc4_bo.c')
-rw-r--r-- | drivers/gpu/drm/vc4/vc4_bo.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/gpu/drm/vc4/vc4_bo.c b/drivers/gpu/drm/vc4/vc4_bo.c index 26817bfe71b4..b6169d3a93c1 100644 --- a/drivers/gpu/drm/vc4/vc4_bo.c +++ b/drivers/gpu/drm/vc4/vc4_bo.c @@ -124,7 +124,6 @@ vc4_bo_create(struct drm_device *dev, size_t unaligned_size) struct vc4_dev *vc4 = to_vc4_dev(dev); uint32_t size = roundup(unaligned_size, PAGE_SIZE); uint32_t page_index = bo_page_index(size); - struct vc4_bo *bo = NULL; struct drm_gem_cma_object *cma_obj; if (size == 0) @@ -133,15 +132,14 @@ vc4_bo_create(struct drm_device *dev, size_t unaligned_size) /* First, try to get a vc4_bo from the kernel BO cache. */ if (vc4->bo_cache.size_list_size > page_index) { if (!list_empty(&vc4->bo_cache.size_list[page_index])) { - bo = list_first_entry(&vc4->bo_cache.size_list[page_index], - struct vc4_bo, size_head); + struct vc4_bo *bo = + list_first_entry(&vc4->bo_cache.size_list[page_index], + struct vc4_bo, size_head); vc4_bo_remove_from_cache(bo); + kref_init(&bo->base.base.refcount); + return bo; } } - if (bo) { - kref_init(&bo->base.base.refcount); - return bo; - } /* Otherwise, make a new BO. */ cma_obj = drm_gem_cma_create(dev, size); |