On 2021-12-17 14:25, Nicholas Kazlauskas wrote: > [Why] > A porting error on a previous patch left the block of code that > causes the crash from a NULL pointer dereference. > > More specifically, we try to access link_enc before it's assigned in > the USB4 case in the following assignment: > > config.dio_output_idx = link_enc->transmitter - TRANSMITTER_UNIPHY_A; > > [How] > That assignment occurs later depending on the ASIC version. It's only > needed on DCN31+ and only after link_enc is already assigned. > > Fixes: 35b6fe499be7 ("drm/amd/display: fix a crash on USB4 over C20 PHY") > Cc: Rodrigo Siqueira <Rodrigo.Siqueira@xxxxxxx> > Cc: Harry Wentland <harry.wentland@xxxxxxx> > Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@xxxxxxx> Reviewed-by: Harry Wentland <harry.wentland@xxxxxxx> Harry > --- > drivers/gpu/drm/amd/display/dc/core/dc_link.c | 5 +---- > 1 file changed, 1 insertion(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link.c b/drivers/gpu/drm/amd/display/dc/core/dc_link.c > index 3d75f56a939c..857941d83f1f 100644 > --- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c > @@ -4009,12 +4009,9 @@ static void update_psp_stream_config(struct pipe_ctx *pipe_ctx, bool dpms_off) > config.dig_be = pipe_ctx->stream->link->link_enc_hw_inst; > #if defined(CONFIG_DRM_AMD_DC_DCN) > config.stream_enc_idx = pipe_ctx->stream_res.stream_enc->id - ENGINE_ID_DIGA; > - > + > if (pipe_ctx->stream->link->ep_type == DISPLAY_ENDPOINT_PHY || > pipe_ctx->stream->link->ep_type == DISPLAY_ENDPOINT_USB4_DPIA) { > - link_enc = pipe_ctx->stream->link->link_enc; > - config.dio_output_type = pipe_ctx->stream->link->ep_type; > - config.dio_output_idx = link_enc->transmitter - TRANSMITTER_UNIPHY_A; > if (pipe_ctx->stream->link->ep_type == DISPLAY_ENDPOINT_PHY) > link_enc = pipe_ctx->stream->link->link_enc; > else if (pipe_ctx->stream->link->ep_type == DISPLAY_ENDPOINT_USB4_DPIA)