drm/xe: Fix bo leak in intel_fb_bo_framebuffer_init
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Thu, 4 Apr 2024 09:03:02 +0000 (11:03 +0200)
committerMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Fri, 12 Apr 2024 10:42:21 +0000 (12:42 +0200)
Add a unreference bo in the error path, to prevent leaking a bo ref.

Return 0 on success to clarify the success path.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Fixes: 44e694958b95 ("drm/xe/display: Implement display support")
Cc: <stable@vger.kernel.org> # v6.8+
Reviewed-by: Nirmoy Das <nirmoy.das@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240404090302.68422-1-maarten.lankhorst@linux.intel.com
drivers/gpu/drm/xe/display/intel_fb_bo.c

index dba327f53ac5447a6043fe90394c1aa1a040c0c7..e18521acc516f65f384b20fcdce9437bb19a7843 100644 (file)
@@ -31,7 +31,7 @@ int intel_fb_bo_framebuffer_init(struct intel_framebuffer *intel_fb,
 
        ret = ttm_bo_reserve(&bo->ttm, true, false, NULL);
        if (ret)
-               return ret;
+               goto err;
 
        if (!(bo->flags & XE_BO_FLAG_SCANOUT)) {
                /*
@@ -42,12 +42,16 @@ int intel_fb_bo_framebuffer_init(struct intel_framebuffer *intel_fb,
                 */
                if (XE_IOCTL_DBG(i915, !list_empty(&bo->ttm.base.gpuva.list))) {
                        ttm_bo_unreserve(&bo->ttm);
-                       return -EINVAL;
+                       ret = -EINVAL;
+                       goto err;
                }
                bo->flags |= XE_BO_FLAG_SCANOUT;
        }
        ttm_bo_unreserve(&bo->ttm);
+       return 0;
 
+err:
+       xe_bo_put(bo);
        return ret;
 }