[PATCHv5 16/34] drm/komeda: Simplify error handling

Andrzej Pietrasiewicz
2019-12-17T14:52:59Z

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(-)

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);