瀏覽代碼

disp: msm: sde: fix error return in plane atomic_check

In plane atomic_check function, the error code
from one of the checks is overwritten by the
return-value of subsequent check. This leads to
wrong return-value propagation resulting in
undefined behavior. Fix it to return the appropriate
error code on any failure.

Change-Id: I53b427d1b69c3ebfaa6709814bd9095676ff942d
Signed-off-by: Veera Sundaram Sankaran <[email protected]>
Veera Sundaram Sankaran 6 年之前
父節點
當前提交
c102669c98
共有 1 個文件被更改,包括 4 次插入3 次删除
  1. 4 3
      msm/sde/sde_plane.c

+ 4 - 3
msm/sde/sde_plane.c

@@ -2536,8 +2536,7 @@ static int sde_plane_sspp_atomic_check(struct drm_plane *plane,
 
 	if (!psde->pipe_sblk) {
 		SDE_ERROR_PLANE(psde, "invalid catalog\n");
-		ret = -EINVAL;
-		goto exit;
+		return -EINVAL;
 	}
 
 	/* src values are in Q16 fixed point, convert to integer */
@@ -2605,6 +2604,9 @@ static int sde_plane_sspp_atomic_check(struct drm_plane *plane,
 		ret = -EINVAL;
 	}
 
+	if (ret)
+		return ret;
+
 	ret = _sde_atomic_check_decimation_scaler(state, psde, fmt, pstate,
 		&src, &dst, width, height);
 
@@ -2626,7 +2628,6 @@ modeset_update:
 	if (!ret)
 		_sde_plane_sspp_atomic_check_mode_changed(psde,
 				state, plane->state);
-exit:
 	return ret;
 }