]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/display: Fix out-of-bounds read in dp_get_eq_aux_rd_interval()
authorHarry Wentland <harry.wentland@amd.com>
Tue, 5 May 2026 15:44:15 +0000 (11:44 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 3 Jun 2026 18:43:20 +0000 (14:43 -0400)
[Why & How]
The aux_rd_interval array in struct dc_lttpr_caps is declared with
MAX_REPEATER_CNT - 1 (7) elements, indexed 0..6. However, the offset
parameter passed to dp_get_eq_aux_rd_interval() can be as large as
MAX_REPEATER_CNT (8) when a sink reports 8 LTTPR repeaters via DPCD.
This leads to an out-of-bounds read of aux_rd_interval[7] when offset
is 8.

Fix this by growing aux_rd_interval to MAX_REPEATER_CNT elements to
accommodate the full range of valid repeater counts defined by the DP
spec.

Assisted-by: GitHub Copilot:Claude claude-4-opus
Signed-off-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Ray Wu <ray.wu@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit a55a458a8df37a65ffda5cf721d554a8f74f6b04)
Cc: stable@vger.kernel.org
drivers/gpu/drm/amd/display/dc/dc_dp_types.h

index 7fa336bf1115d1288fca7d556fb2e49140a6a48c..7dd73eaaf94006ee41654e0fe794a52fbb95f876 100644 (file)
@@ -1217,7 +1217,7 @@ struct dc_lttpr_caps {
        union dp_main_link_channel_coding_lttpr_cap main_link_channel_coding;
        union dp_128b_132b_supported_lttpr_link_rates supported_128b_132b_rates;
        union dp_alpm_lttpr_cap alpm;
-       uint8_t aux_rd_interval[MAX_REPEATER_CNT - 1];
+       uint8_t aux_rd_interval[MAX_REPEATER_CNT];
        uint8_t lttpr_ieee_oui[3]; // Always read from closest LTTPR to host
        uint8_t lttpr_device_id[6]; // Always read from closest LTTPR to host
 };