drm/amd/display: Fix null pointer dereference for encoders
authorJimmy Kizito <Jimmy.Kizito@amd.com>
Sun, 12 Sep 2021 15:21:52 +0000 (11:21 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 23 Sep 2021 19:17:31 +0000 (15:17 -0400)
[Why]
Links which are dynamically assigned link encoders have their link
encoder set to NULL.

[How]
Check that a pointer to a link_encoder object is non-NULL before using
it.

Reviewed-by: Aric Cyr <aric.cyr@amd.com>
Reviewed-by: Meenakshikumar Somasundaram <meenakshikumar.somasundaram@amd.com>
Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Jimmy Kizito <Jimmy.Kizito@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c

index 0fe0eb06eaccb4a2f2cd119ca64ea7b2884d6cd2..6421c896f2a127bee6a89cde9c967a2c1f67b219 100644 (file)
@@ -5705,7 +5705,7 @@ enum dc_status dp_set_fec_ready(struct dc_link *link, bool ready)
                                link_enc->funcs->fec_set_ready(link_enc, true);
                                link->fec_state = dc_link_fec_ready;
                        } else {
-                               link_enc->funcs->fec_set_ready(link->link_enc, false);
+                               link_enc->funcs->fec_set_ready(link_enc, false);
                                link->fec_state = dc_link_fec_not_ready;
                                dm_error("dpcd write failed to set fec_ready");
                        }
index e1edbfa761f1fa685a9f63cd8f5a05f179e35eac..c5e2b4f138fd991b9c09ca92668aa255783b6be0 100644 (file)
@@ -1587,7 +1587,7 @@ void dcn10_power_down_on_boot(struct dc *dc)
                for (i = 0; i < dc->link_count; i++) {
                        struct dc_link *link = dc->links[i];
 
-                       if (link->link_enc->funcs->is_dig_enabled &&
+                       if (link->link_enc && link->link_enc->funcs->is_dig_enabled &&
                                        link->link_enc->funcs->is_dig_enabled(link->link_enc) &&
                                        dc->hwss.power_down) {
                                dc->hwss.power_down(dc);