From: Ilya Bakoulin <[email protected]>

[Why & How]
Calling dc_update_planes_and_stream separately for stream and its
phantom stream causes a NULL pointer dereference, since the phantom is
destroyed on the first call.

Skip the call for phantom streams.

Reviewed-by: Alvin Lee <[email protected]>
Signed-off-by: Ilya Bakoulin <[email protected]>
Signed-off-by: Ray Wu <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/link/accessories/link_dp_cts.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/amd/display/dc/link/accessories/link_dp_cts.c 
b/drivers/gpu/drm/amd/display/dc/link/accessories/link_dp_cts.c
index ae6ed3a52d53..d3172dbdcdf0 100644
--- a/drivers/gpu/drm/amd/display/dc/link/accessories/link_dp_cts.c
+++ b/drivers/gpu/drm/amd/display/dc/link/accessories/link_dp_cts.c
@@ -145,6 +145,8 @@ static void dp_retrain_link_dp_test(struct dc_link *link,
        // Set DPMS on with stream update
        // Cache all streams on current link since dc_update_planes_and_stream 
might kill current_state
        for (i = 0; i < MAX_PIPES; i++) {
+               if (state->streams[i] && state->streams[i]->is_phantom)
+                       continue;
                if (state->streams[i] && state->streams[i]->link && 
state->streams[i]->link == link)
                        streams_on_link[num_streams_on_link++] = 
state->streams[i];
        }
-- 
2.43.0

Reply via email to