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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Nov 2021 18:16:11 +0000 (19:16 +0100)
[ Upstream commit 60f39edd897ea134a4ddb789a6795681691c3183 ]

[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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c

index 6d655e158267a837d2085baa0898a137611a35e2..61c18637f84dc08e5f676f17ab974959d0f94a48 100644 (file)
@@ -4690,7 +4690,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 df8a7718a85fc39f4d1bc7b1501391713462b28f..3af49cdf89ebd0aa2c21a28d1e23fcd50465fb69 100644 (file)
@@ -1522,7 +1522,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);