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

Andrzej Pietrasiewicz andrzej.p at collabora.com
Fri Dec 13 15:58:50 UTC 2019


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



More information about the dri-devel mailing list