[PATCH 08/41] drm/amd/display: Bounds-check connector->index in dm_dp_mst_get_modes

<[email protected]> Fri, 31 Jul 2026 17:12:29 -0400
Newsgroups org.freedesktop.lists.amd-gfx
Message-ID <[email protected]>
From: Harry Wentland <[email protected]>

dm_dp_mst_get_modes() uses drm_connector->index to index the
per-connector HDCP arrays in struct hdcp_workqueue. Those arrays are
sized to AMDGPU_DM_MAX_DISPLAY_COUNT, which matches the DRM connector
index range (0..31). Add a defensive bounds check so that, should the
DRM connector index range ever grow beyond the array size, the access
is skipped instead of reading and writing out of bounds.

Assisted-by: Copilot:claude-opus-4.8
Reviewed-by: Alex Hung <[email protected]>
Signed-off-by: Harry Wentland <[email protected]>
Signed-off-by: Roman Li <[email protected]>
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

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 e001d868db80..045a7f88b754 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
@@ -485,7 +485,8 @@ static int dm_dp_mst_get_modes(struct drm_connector *connector)
 			struct drm_device *dev = connector->dev;
 			struct amdgpu_device *adev = drm_to_adev(dev);
 
-			if (adev->dm.hdcp_workqueue) {
+			if (adev->dm.hdcp_workqueue &&
+			    connector->index < AMDGPU_DM_MAX_DISPLAY_COUNT) {
 				struct hdcp_workqueue *hdcp_work = adev->dm.hdcp_workqueue;
 				struct hdcp_workqueue *hdcp_w =
 					&hdcp_work[aconnector->dc_link->link_index];
-- 
2.34.1