[PATCHv4 19/36] drm/komeda: Move object lookup before size checks

Andrzej Pietrasiewicz
2019-12-13T21:24:58Z

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 <andrzej.p@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 6325b20e661d..b923e2b6c523 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
@@ -132,6 +132,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;
@@ -150,37 +151,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);
@@ -210,7 +203,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);