From: Alex Hung <[email protected]>

[ Upstream commit 367cd9ceba1933b63bc1d87d967baf6d9fd241d2 ]

[WHAT & HOW]
drr_timing and subvp_pipe are initialized to null and they are not
always assigned new values. It is necessary to check for null before
dereferencing.

This fixes 2 FORWARD_NULL issues reported by Coverity.

Reviewed-by: Nevenko Stupar <[email protected]>
Reviewed-by: Rodrigo Siqueira <[email protected]>
Signed-off-by: Jerry Zuo <[email protected]>
Signed-off-by: Alex Hung <[email protected]>
Tested-by: Daniel Wheeler <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c 
b/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c
index ebcf5ece209a4..bf8c89fe95a7e 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c
@@ -871,8 +871,9 @@ static bool subvp_drr_schedulable(struct dc *dc, struct 
dc_state *context)
         * for VBLANK: (VACTIVE region of the SubVP pipe can fit the MALL 
prefetch, VBLANK frame time,
         * and the max of (VBLANK blanking time, MALL region)).
         */
-       if (stretched_drr_us < (1 / (double)drr_timing->min_refresh_in_uhz) * 
1000000 * 1000000 &&
-                       subvp_active_us - prefetch_us - stretched_drr_us - 
max_vblank_mallregion > 0)
+       if (drr_timing &&
+           stretched_drr_us < (1 / (double)drr_timing->min_refresh_in_uhz) * 
1000000 * 1000000 &&
+           subvp_active_us - prefetch_us - stretched_drr_us - 
max_vblank_mallregion > 0)
                schedulable = true;
 
        return schedulable;
@@ -937,7 +938,7 @@ static bool subvp_vblank_schedulable(struct dc *dc, struct 
dc_state *context)
                if (!subvp_pipe && pipe_mall_type == SUBVP_MAIN)
                        subvp_pipe = pipe;
        }
-       if (found) {
+       if (found && subvp_pipe) {
                phantom_stream = dc_state_get_paired_subvp_stream(context, 
subvp_pipe->stream);
                main_timing = &subvp_pipe->stream->timing;
                phantom_timing = &phantom_stream->timing;
-- 
2.43.0

Reply via email to