drm/gma500: Add the missed drm_gem_object_put() in psb_user_framebuffer_create()
authorJing Xiangfeng <jingxiangfeng@huawei.com>
Tue, 29 Jun 2021 11:59:56 +0000 (19:59 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 20 Jul 2021 14:05:48 +0000 (16:05 +0200)
[ Upstream commit cd8f318fbd266b127ffc93cc4c1eaf9a5196fafb ]

psb_user_framebuffer_create() misses to call drm_gem_object_put() in an
error path. Add the missed function call to fix it.

Signed-off-by: Jing Xiangfeng <jingxiangfeng@huawei.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20210629115956.15160-1-jingxiangfeng@huawei.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/gma500/framebuffer.c

index 54d9876..6ef4ea0 100644 (file)
@@ -435,6 +435,7 @@ static struct drm_framebuffer *psb_user_framebuffer_create
                         const struct drm_mode_fb_cmd2 *cmd)
 {
        struct drm_gem_object *obj;
+       struct drm_framebuffer *fb;
 
        /*
         *      Find the GEM object and thus the gtt range object that is
@@ -445,7 +446,11 @@ static struct drm_framebuffer *psb_user_framebuffer_create
                return ERR_PTR(-ENOENT);
 
        /* Let the core code do all the work */
-       return psb_framebuffer_create(dev, cmd, obj);
+       fb = psb_framebuffer_create(dev, cmd, obj);
+       if (IS_ERR(fb))
+               drm_gem_object_put(obj);
+
+       return fb;
 }
 
 static int psbfb_probe(struct drm_fb_helper *fb_helper,