The lookup is performed the same way in both branches of the "if"
statement, so move the lookup to before the "if". err_cleanup case
is adjusted accordingly.

Signed-off-by: Andrzej Pietrasiewicz <andrze...@collabora.com>
---
 .../arm/display/komeda/komeda_framebuffer.c   | 23 +++++++------------
 1 file changed, 8 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c 
b/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
index f50f83c68c70..acffceeb26f1 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
@@ -131,6 +131,7 @@ komeda_fb_create(struct drm_device *dev, struct drm_file 
*file,
                 const struct drm_mode_fb_cmd2 *mode_cmd)
 {
        struct komeda_dev *mdev = dev->dev_private;
+       struct drm_gem_object *objs[4];
        struct komeda_fb *kfb;
        const struct drm_format_info *info;
        int ret = 0, i;
@@ -149,37 +150,29 @@ komeda_fb_create(struct drm_device *dev, struct drm_file 
*file,
                goto err_free;
        }
 
+       ret = drm_gem_fb_lookup(dev, file, mode_cmd, objs);
+       if (ret < 0)
+               goto err_free;
+
        drm_helper_mode_fill_fb_struct(dev, &kfb->base, mode_cmd);
        info = kfb->base.format;
 
        if (kfb->base.modifier) {
-               struct drm_gem_object *objs[4];
-
                if (info->num_planes != 1) {
                        DRM_DEBUG_KMS("AFBC requires exactly 1 plane.\n");
                        ret = -EINVAL;
-                       goto err_free;
+                       goto err_cleanup;
                }
 
-               ret = drm_gem_fb_lookup(dev, file, mode_cmd, objs);
-               if (ret < 0)
-                       goto err_free;
-
                ret = komeda_fb_afbc_size_check(kfb, info, objs, file,
                                                mode_cmd);
                for (i = 0; i < info->num_planes; ++i)
                        kfb->base.obj[i] = objs[i];
        } else {
-               struct drm_gem_object *objs[4];
-
                ret = komeda_fb_check_src_coords(kfb, 0, 0, kfb->base.width,
                                                 kfb->base.height);
                if (ret)
-                       goto err_free;
-
-               ret = drm_gem_fb_lookup(dev, file, mode_cmd, objs);
-               if (ret < 0)
-                       goto err_free;
+                       goto err_cleanup;
 
                ret = komeda_fb_none_afbc_size_check(mdev, info, objs,
                                                     file, mode_cmd);
@@ -209,7 +202,7 @@ komeda_fb_create(struct drm_device *dev, struct drm_file 
*file,
 
 err_cleanup:
        for (i = 0; i < kfb->base.format->num_planes; i++)
-               drm_gem_object_put_unlocked(kfb->base.obj[i]);
+               drm_gem_object_put_unlocked(objs[i]);
 err_free:
        kfree(kfb);
        return ERR_PTR(ret);
-- 
2.17.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to