[PATCHv5,16/34] drm/komeda: Simplify error handling
diff mbox series

Message ID 20191217145020.14645-17-andrzej.p@collabora.com
State New
Headers show
Series
  • Add AFBC support for Rockchip
Related show

Commit Message

Andrzej Pietrasiewicz Dec. 17, 2019, 2:50 p.m. UTC
Use less code to handle errors.

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

Patch
diff mbox series

diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c b/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
index aa703aabbeee..f50f83c68c70 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
@@ -145,8 +145,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);
@@ -157,15 +157,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);
@@ -174,16 +172,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);
@@ -214,7 +210,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);
 }