All of lore.kernel.org
 help / color / mirror / Atom feed
From: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
To: jianqi.ren.cn@windriver.com, wayne.lin@amd.com,
	gregkh@linuxfoundation.org
Cc: stable@vger.kernel.org, harry.wentland@amd.com,
	sunpeng.li@amd.com, Rodrigo.Siqueira@amd.com,
	alexander.deucher@amd.com, christian.koenig@amd.com,
	airlied@gmail.com, daniel@ffwll.ch, Jerry.Zuo@amd.com,
	zaeem.mohamed@amd.com, amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	Vegard Nossum <vegard.nossum@oracle.com>
Subject: Re: [PATCH 6.1.y] drm/amd/display: Don't refer to dc_sink in is_dsc_need_re_compute
Date: Mon, 9 Dec 2024 11:43:32 +0530	[thread overview]
Message-ID: <82d8db95-2f62-4124-aff8-424252f505df@oracle.com> (raw)
In-Reply-To: <20241209063637.3427088-1-jianqi.ren.cn@windriver.com>

Hi Jianqi,

On 09/12/24 12:06, jianqi.ren.cn@windriver.com wrote:
> From: Wayne Lin <wayne.lin@amd.com>
> 
> [ Upstream commit fcf6a49d79923a234844b8efe830a61f3f0584e4 ]
> 
> [Why]
> When unplug one of monitors connected after mst hub, encounter null pointer dereference.
> 
> It's due to dc_sink get released immediately in early_unregister() or detect_ctx(). When
> commit new state which directly referring to info stored in dc_sink will cause null pointer
> dereference.
> 
> [how]
> Remove redundant checking condition. Relevant condition should already be covered by checking
> if dsc_aux is null or not. Also reset dsc_aux to NULL when the connector is disconnected.
> 
> Reviewed-by: Jerry Zuo <jerry.zuo@amd.com>
> Acked-by: Zaeem Mohamed <zaeem.mohamed@amd.com>
> Signed-off-by: Wayne Lin <wayne.lin@amd.com>
> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
> Signed-off-by: Jianqi Ren <jianqi.ren.cn@windriver.com>
> ---
>   drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 4 ++++
>   1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> index 1acef5f3838f..a1619f4569cf 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> @@ -183,6 +183,8 @@ amdgpu_dm_mst_connector_early_unregister(struct drm_connector *connector)
>   		dc_sink_release(dc_sink);
>   		aconnector->dc_sink = NULL;
>   		aconnector->edid = NULL;
> +		aconnector->dsc_aux = NULL;
> +		port->passthrough_aux = NULL;
>   	}
>   
>   	aconnector->mst_status = MST_STATUS_DEFAULT;
> @@ -487,6 +489,8 @@ dm_dp_mst_detect(struct drm_connector *connector,
>   		dc_sink_release(aconnector->dc_sink);
>   		aconnector->dc_sink = NULL;
>   		aconnector->edid = NULL;
> +		aconnector->dsc_aux = NULL;
> +		port->passthrough_aux = NULL;
>   
>   		amdgpu_dm_set_mst_status(&aconnector->mst_status,
>   			MST_REMOTE_EDID | MST_ALLOCATE_NEW_PAYLOAD | MST_CLEAR_ALLOCATED_PAYLOAD,

This backport doesn't look right to me, can you please clarify these.

1.  I think it is worth documenting in commit message just before your 
SOB on why you don't need this hunk:

                         MST_REMOTE_EDID | MST_ALLOCATE_NEW_PAYLOAD | 
MST_CLEAR_ALLOCATED_PAYLOAD,
@@ -1238,14 +1242,6 @@ static bool is_dsc_need_re_compute(
                 if (!aconnector || !aconnector->dsc_aux)
                         continue;

-               /*
-                *      check if cached virtual MST DSC caps are 
available and DSC is supported
-                *      as per specifications in their Virtual DPCD 
registers.
-               */
-               if 
(!(aconnector->dc_sink->dsc_caps.dsc_dec_caps.is_dsc_supported ||
- 
aconnector->dc_link->dpcd_caps.dsc_caps.dsc_basic_caps.fields.dsc_support.DSC_PASSTHROUGH_SUPPORT))
-                       continue;
-
                 stream_on_link[new_stream_on_link_num] = aconnector;
                 new_stream_on_link_num++;


which is part of upstream, I understand that this is not in 6.1.y code, 
if so is it even affected ?

2. Also commit message says:

""
Remove redundant checking condition. Relevant condition should already 
be covered by checking if dsc_aux is null or not. Also reset dsc_aux to 
NULL when the connector is disconnected.
""

but the if(!aconnector->dsc_aux) is not in 6.1.y, so something is 
missing. Maybe 6.1.y is not affected or we need more backports to 6.1.y 
to make them clean cherry-picks ?

Thanks,
Harshit



  reply	other threads:[~2024-12-09  6:13 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-09  6:36 [PATCH 6.1.y] drm/amd/display: Don't refer to dc_sink in is_dsc_need_re_compute jianqi.ren.cn
2024-12-09  6:13 ` Harshit Mogalapalli [this message]
2024-12-09 14:35 ` Sasha Levin
  -- strict thread matches above, loose matches on Subject: below --
2025-05-13  1:52 jianqi.ren.cn
2025-05-13 18:50 ` Sasha Levin
2024-12-11 10:15 jianqi.ren.cn
2024-12-11 16:33 ` Sasha Levin
2024-12-12 12:11 ` Greg KH
2024-12-11 10:01 jianqi.ren.cn
2024-12-11 16:32 ` Sasha Levin
2024-12-06 10:06 jianqi.ren.cn
2024-12-06 17:11 ` Sasha Levin
2024-12-11  8:15 ` Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=82d8db95-2f62-4124-aff8-424252f505df@oracle.com \
    --to=harshit.m.mogalapalli@oracle.com \
    --cc=Jerry.Zuo@amd.com \
    --cc=Rodrigo.Siqueira@amd.com \
    --cc=airlied@gmail.com \
    --cc=alexander.deucher@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=christian.koenig@amd.com \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=harry.wentland@amd.com \
    --cc=jianqi.ren.cn@windriver.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=sunpeng.li@amd.com \
    --cc=vegard.nossum@oracle.com \
    --cc=wayne.lin@amd.com \
    --cc=zaeem.mohamed@amd.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.