Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ca40ba85 authored by Lukas Wunner's avatar Lukas Wunner Committed by Jani Nikula
Browse files

drm/i915: Fix double unref in intelfb_alloc failure path



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: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/cd7b33330621a350b0159ec5e098297b139cfaf7.1446892879.git.lukas@wunner.de


Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
parent dcb1394e
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -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;
}