From: Alex Hung <[email protected]>

[WHY & HOW]
v_total is an uint32_t and subtracting an unsigned to a signed will
result in an unsigned which is always >= 0. As a result, the ternary
conditions are always true and thus has no effect.

This is fixed by casting v_total to signed explicitly. This also
avoids v_total subtraction to overflow.

This fixes 1 NO_EFFECT, 2 DEADCODE and 2 INTEGER_OVERFLOW issues reported
by Coverity.

Reviewed-by: Harry Wentland <[email protected]>
Acked-by: Zaeem Mohamed <[email protected]>
Signed-off-by: Alex Hung <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c 
b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
index 55e1c19b97f1..9b24f448ce50 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
@@ -1006,9 +1006,9 @@ static unsigned int 
dc_stream_get_max_flickerless_instant_vtotal_delta(struct dc
        int safe_refresh_v_total = (int)div64_s64((long 
long)stream->timing.pix_clk_100hz*100, safe_refresh_hz*stream->timing.h_total);
 
        if (increase)
-               return ((stream->timing.v_total - safe_refresh_v_total) >= 0) ? 
(stream->timing.v_total - safe_refresh_v_total) : 0;
+               return (((int) stream->timing.v_total - safe_refresh_v_total) 
>= 0) ? (stream->timing.v_total - safe_refresh_v_total) : 0;
 
-       return ((safe_refresh_v_total - stream->timing.v_total) >= 0) ? 
(safe_refresh_v_total - stream->timing.v_total) : 0;
+       return ((safe_refresh_v_total - (int) stream->timing.v_total) >= 0) ? 
(safe_refresh_v_total - stream->timing.v_total) : 0;
 }
 
 /*
-- 
2.34.1

Reply via email to