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,
[ Sasha's backport helper bot ]
Hi,
The upstream commit SHA1 provided is correct: fcf6a49d79923a234844b8efe830a61f3f0584e4
WARNING: Author mismatch between patch and upstream commit: Backport author: jianqi.ren.cn@windriver.com Commit author: Wayne Lin wayne.lin@amd.com
Status in newer kernel trees: 6.12.y | Present (exact SHA1) 6.6.y | Present (different SHA1: 77b96aa2e06c) 6.1.y | Not found
Note: The patch differs from the upstream commit: --- 1: fcf6a49d79923 ! 1: 5ff7cd9148131 drm/amd/display: Don't refer to dc_sink in is_dsc_need_re_compute @@ Metadata ## Commit message ## drm/amd/display: Don't refer to dc_sink in is_dsc_need_re_compute
+ [ Upstream commit fcf6a49d79923a234844b8efe830a61f3f0584e4 ] + [Why] When unplug one of monitors connected after mst hub, encounter null pointer dereference.
@@ Commit message 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 ## @@ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c: amdgpu_dm_mst_connector_early_unregister(struct drm_connector *connector) @@ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c: dm_dp_mst_detect(st
amdgpu_dm_set_mst_status(&aconnector->mst_status, MST_REMOTE_EDID | MST_ALLOCATE_NEW_PAYLOAD | MST_CLEAR_ALLOCATED_PAYLOAD, -@@ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c: 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++; - ---
Results of testing on various branches:
| Branch | Patch Apply | Build Test | |---------------------------|-------------|------------| | stable/linux-6.1.y | Success | Success |
On Fri, Dec 06, 2024 at 06:06:29PM +0800, jianqi.ren.cn@windriver.com wrote:
From: Wayne Lin wayne.lin@amd.com
[ Upstream commit fcf6a49d79923a234844b8efe830a61f3f0584e4 ]
Please cc: all relevant people on backports.
linux-stable-mirror@lists.linaro.org