@@ -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);
}
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(-)