From: Ville Syrjälä <ville.syrj...@linux.intel.com>

Instead of doing the things in a convoluted way with the failure and
success paths mixed up let's just clear old_fb when we encounter an
error and bail out immediately. We already did this for the pageflip
path.

Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
---
 drivers/gpu/drm/drm_plane.c | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
index 6052475a20a5..ef0cc33b43ce 100644
--- a/drivers/gpu/drm/drm_plane.c
+++ b/drivers/gpu/drm/drm_plane.c
@@ -688,12 +688,13 @@ static int __setplane_internal(struct drm_plane *plane,
        if (!fb) {
                plane->old_fb = plane->fb;
                ret = plane->funcs->disable_plane(plane, ctx);
-               if (!ret) {
-                       plane->crtc = NULL;
-                       plane->fb = NULL;
-               } else {
+               if (ret) {
                        plane->old_fb = NULL;
+                       return ret;
                }
+
+               plane->crtc = NULL;
+               plane->fb = NULL;
                goto out;
        }
 
@@ -701,26 +702,27 @@ static int __setplane_internal(struct drm_plane *plane,
                               crtc_x, crtc_y, crtc_w, crtc_h,
                               src_x, src_y, src_w, src_h);
        if (ret)
-               goto out;
+               return ret;
 
        plane->old_fb = plane->fb;
        ret = plane->funcs->update_plane(plane, crtc, fb,
                                         crtc_x, crtc_y, crtc_w, crtc_h,
                                         src_x, src_y, src_w, src_h, ctx);
-       if (!ret) {
-               plane->crtc = crtc;
-               plane->fb = fb;
-               drm_framebuffer_get(plane->fb);
-       } else {
+       if (ret) {
                plane->old_fb = NULL;
+               return ret;
        }
 
+       plane->crtc = crtc;
+       plane->fb = fb;
+       drm_framebuffer_get(plane->fb);
+
 out:
        if (plane->old_fb)
                drm_framebuffer_put(plane->old_fb);
        plane->old_fb = NULL;
 
-       return ret;
+       return 0;
 }
 
 static int __setplane_atomic(struct drm_plane *plane,
-- 
2.23.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to