OSDN Git Service

drm/amd: add some extra checks that is_dig_enabled is defined
authorMario Limonciello <mario.limonciello@amd.com>
Fri, 10 Dec 2021 15:45:23 +0000 (09:45 -0600)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 13 Dec 2021 21:33:16 +0000 (16:33 -0500)
There are a few places that this isn't checked that could potentially
be a NULL pointer access.

Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn21/rn_clk_mgr.c
drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c

index ac2d4c4..8653b4b 100644 (file)
@@ -77,7 +77,8 @@ int rn_get_active_display_cnt_wa(
                const struct dc_link *link = dc->links[i];
 
                /* abusing the fact that the dig and phy are coupled to see if the phy is enabled */
-               if (link->link_enc->funcs->is_dig_enabled(link->link_enc))
+               if (link->link_enc->funcs->is_dig_enabled &&
+                   link->link_enc->funcs->is_dig_enabled(link->link_enc))
                        display_count++;
        }
 
index abef132..0d6dc32 100644 (file)
@@ -1827,17 +1827,16 @@ void dce110_enable_accelerated_mode(struct dc *dc, struct dc_state *context)
                        if (edp_link != edp_streams[0]->link)
                                continue;
                        // enable fastboot if backend is enabled on eDP
-                       if (edp_link->link_enc->funcs->is_dig_enabled(edp_link->link_enc)) {
-                               /* Set optimization flag on eDP stream*/
-                               if (edp_link->link_status.link_active) {
-                                       edp_stream = edp_streams[0];
-                                       can_apply_edp_fast_boot = !is_edp_ilr_optimization_required(edp_stream->link, &edp_stream->timing);
-                                       edp_stream->apply_edp_fast_boot_optimization = can_apply_edp_fast_boot;
-                                       if (can_apply_edp_fast_boot)
-                                               DC_LOG_EVENT_LINK_TRAINING("eDP fast boot disabled to optimize link rate\n");
-
-                                       break;
-                               }
+                       if (edp_link->link_enc->funcs->is_dig_enabled &&
+                           edp_link->link_enc->funcs->is_dig_enabled(edp_link->link_enc) &&
+                           edp_link->link_status.link_active) {
+                               edp_stream = edp_streams[0];
+                               can_apply_edp_fast_boot = !is_edp_ilr_optimization_required(edp_stream->link, &edp_stream->timing);
+                               edp_stream->apply_edp_fast_boot_optimization = can_apply_edp_fast_boot;
+                               if (can_apply_edp_fast_boot)
+                                       DC_LOG_EVENT_LINK_TRAINING("eDP fast boot disabled to optimize link rate\n");
+
+                               break;
                        }
                }
                // We are trying to enable eDP, don't power down VDD