Use less code to handle errors.

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

diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c 
b/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
index cc9dc8588e8d..6325b20e661d 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
@@ -146,8 +146,8 @@ komeda_fb_create(struct drm_device *dev, struct drm_file 
*file,
        if (!kfb->format_caps) {
                DRM_DEBUG_KMS("FMT %x is not supported.\n",
                              mode_cmd->pixel_format);
-               kfree(kfb);
-               return ERR_PTR(-EINVAL);
+               ret = -EINVAL;
+               goto err_free;
        }
 
        drm_helper_mode_fill_fb_struct(dev, &kfb->base, mode_cmd);
@@ -158,15 +158,13 @@ komeda_fb_create(struct drm_device *dev, struct drm_file 
*file,
 
                if (info->num_planes != 1) {
                        DRM_DEBUG_KMS("AFBC requires exactly 1 plane.\n");
-                       kfree(kfb);
-                       return ERR_PTR(-EINVAL);
+                       ret = -EINVAL;
+                       goto err_free;
                }
 
                ret = drm_gem_fb_lookup(dev, file, mode_cmd, objs);
-               if (ret < 0) {
-                       kfree(kfb);
-                       return ERR_PTR(ret);
-               }
+               if (ret < 0)
+                       goto err_free;
 
                ret = komeda_fb_afbc_size_check(kfb, info, objs, file,
                                                mode_cmd);
@@ -175,16 +173,14 @@ komeda_fb_create(struct drm_device *dev, struct drm_file 
*file,
        } else {
                struct drm_gem_object *objs[4];
 
-               if (komeda_fb_check_src_coords(kfb, 0, 0, kfb->base.width,
-                                              kfb->base.height)) {
-                       kfree(kfb);
-                       return ERR_PTR(-EINVAL);
-               }
+               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) {
-                       kfree(kfb);
-                       return ERR_PTR(ret);
-               }
+               if (ret < 0)
+                       goto err_free;
 
                ret = komeda_fb_none_afbc_size_check(mdev, info, objs,
                                                     file, mode_cmd);
@@ -215,7 +211,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]);
-
+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