[PATCH 2/2] fb-obj
Chris Wilson
chris at chris-wilson.co.uk
Wed May 27 20:34:10 UTC 2020
---
drivers/gpu/drm/i915/display/intel_display.c | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 37c28e97069e..73ff88a8636c 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -17040,8 +17040,11 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
static void intel_user_framebuffer_destroy(struct drm_framebuffer *fb)
{
struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb);
+ int i;
drm_framebuffer_cleanup(fb);
+ for (i = 0; i < fb->format->num_planes; i++)
+ __drm_gem_object_put(fb->obj[i]);
intel_frontbuffer_put(intel_fb->frontbuffer);
kfree(intel_fb);
@@ -17186,7 +17189,7 @@ static int intel_framebuffer_init(struct intel_framebuffer *intel_fb,
if (mode_cmd->handles[i] != mode_cmd->handles[0]) {
drm_dbg_kms(&dev_priv->drm, "bad plane %d handle\n",
i);
- goto err;
+ goto err_obj;
}
stride_alignment = intel_fb_stride_alignment(fb, i);
@@ -17194,7 +17197,7 @@ static int intel_framebuffer_init(struct intel_framebuffer *intel_fb,
drm_dbg_kms(&dev_priv->drm,
"plane %d pitch (%d) must be at least %u byte aligned\n",
i, fb->pitches[i], stride_alignment);
- goto err;
+ goto err_obj;
}
if (is_gen12_ccs_plane(fb, i)) {
@@ -17205,25 +17208,28 @@ static int intel_framebuffer_init(struct intel_framebuffer *intel_fb,
"ccs aux plane %d pitch (%d) must be %d\n",
i,
fb->pitches[i], ccs_aux_stride);
- goto err;
+ goto err_obj;
}
}
- fb->obj[i] = &obj->base;
+ fb->obj[i] = &i915_gem_object_get(obj)->base;
}
ret = intel_fill_fb_info(dev_priv, fb);
if (ret)
- goto err;
+ goto err_obj;
ret = drm_framebuffer_init(&dev_priv->drm, fb, &intel_fb_funcs);
if (ret) {
drm_err(&dev_priv->drm, "framebuffer init failed %d\n", ret);
- goto err;
+ goto err_obj;
}
return 0;
+err_obj:
+ while (i-- > 0)
+ __drm_gem_object_put(fb->obj[i]);
err:
intel_frontbuffer_put(intel_fb->frontbuffer);
return ret;
--
2.20.1
More information about the Intel-gfx-trybot
mailing list