Message ID | 760b19948cb31e3a219124a34c4db2bf95e9086b.1445771693.git.lukas@wunner.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, Oct 22, 2015 at 01:37:18PM +0200, Lukas Wunner wrote: > In intelfb_alloc(), if the call to intel_pin_and_fence_fb_obj() fails, > the bo is unrefed twice: By drm_framebuffer_remove() and once more by > drm_gem_object_unreference(). Fix it. > > Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > Signed-off-by: Lukas Wunner <lukas@wunner.de> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> > --- > drivers/gpu/drm/i915/intel_fbdev.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c > index 4fd5fdf..ec82b51 100644 > --- a/drivers/gpu/drm/i915/intel_fbdev.c > +++ b/drivers/gpu/drm/i915/intel_fbdev.c > @@ -156,8 +156,9 @@ static int intelfb_alloc(struct drm_fb_helper *helper, > > fb = __intel_framebuffer_create(dev, &mode_cmd, obj); > if (IS_ERR(fb)) { > + drm_gem_object_unreference(&obj->base); > ret = PTR_ERR(fb); > - goto out_unref; > + goto out; > } > > /* Flush everything out, we'll be doing GTT only from now on */ > @@ -173,8 +174,6 @@ static int intelfb_alloc(struct drm_fb_helper *helper, > > out_fb: > drm_framebuffer_remove(fb); > -out_unref: > - drm_gem_object_unreference(&obj->base); > out: > return ret; > } > -- > 1.8.5.2 (Apple Git-48) > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c index 4fd5fdf..ec82b51 100644 --- a/drivers/gpu/drm/i915/intel_fbdev.c +++ b/drivers/gpu/drm/i915/intel_fbdev.c @@ -156,8 +156,9 @@ static int intelfb_alloc(struct drm_fb_helper *helper, fb = __intel_framebuffer_create(dev, &mode_cmd, obj); if (IS_ERR(fb)) { + drm_gem_object_unreference(&obj->base); ret = PTR_ERR(fb); - goto out_unref; + goto out; } /* Flush everything out, we'll be doing GTT only from now on */ @@ -173,8 +174,6 @@ static int intelfb_alloc(struct drm_fb_helper *helper, out_fb: drm_framebuffer_remove(fb); -out_unref: - drm_gem_object_unreference(&obj->base); out: return ret; }
In intelfb_alloc(), if the call to intel_pin_and_fence_fb_obj() fails, the bo is unrefed twice: By drm_framebuffer_remove() and once more by drm_gem_object_unreference(). Fix it. Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Lukas Wunner <lukas@wunner.de> --- drivers/gpu/drm/i915/intel_fbdev.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)