From c102669c986ce0216bbd5bb2e851e514f7a94c36 Mon Sep 17 00:00:00 2001 From: Veera Sundaram Sankaran Date: Mon, 1 Jul 2019 16:23:03 -0700 Subject: [PATCH] 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 --- msm/sde/sde_plane.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/msm/sde/sde_plane.c b/msm/sde/sde_plane.c index 0df6e285bd..d60a3ff700 100644 --- a/msm/sde/sde_plane.c +++ b/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; }